¿Quiere agregar mi consulta de preparación personalizada pero no se ejecuta add_filter?

4

Quiero manipular el orden de WP_User_Query() . Quiero que el usuario salga ordenado por un meta campo personalizado y por orden ascendente.

He comprobado que el código funciona correctamente en users.php , pero como no es un buen lugar para ponerlo, quería ejecutar add_filter( 'prepare_query', 'my_prepare_query');

La llamada en el tema ('include' no existe):

$count_args = array(
    'include' => $include,
    'number' => 999999,
    'fields' => 'ID',
    'orderby' => 'include',
    'order' => 'ASC'
);
$user_count_query = new WP_User_Query( $count_args );

Simplemente agregué otro elseif a prepare_query en la línea 433 de user.php :

elseif ( 'include' == $qv[ 'orderby' ] ) {

    $this->query_from .= " INNER JOIN wp_usermeta ON wp_usermeta.user_id = $wpdb->users.ID";
    $this->query_where .= " AND wp_usermeta.meta_key = 'my_userpoints'";
    $orderby = "wp_usermeta.meta_value";
}

Ahora, ¿por qué add_filter no está sobrescribiendo la función user.php ? ¿No es posible sobrescribir las funciones principales?

    
pregunta David Rosendo 05.02.2013 - 14:39

1 respuesta

1

WP_User_Query permite meta_query búsquedas exactamente como las otras clases de WP_*_Query . Ejemplo aquí:

global $wpdb;
$author_search = new WP_User_Query( array(
    'role'       => 'subscriber', 
    'fields'     => 'all_with_meta',
    // if it's a digit/int/float, use 'meta_value_num'
    'orderby'    => 'meta_value',
    'order'      => 'ASC',
    // you could try -1 as well.
    'nuber'      => 99999999,
    'meta_query' => array(
        'key'     => 'my_userpoints',
        // only needed if you got a specific value you search for
        // 'value'   => '',
        // only needed if you got a specific value you search for
        // and want to compare against it. For e.g. '>', '<', etc. See Codex.
        // 'compare' => '',
        'type'    => 'CHAR', // this is the default, use INT if you got an int/float value
    ),
) );
$author_list   = $author_search->get_results();
$author_count  = $wpdb->num_rows;
    
respondido por el kaiser 11.09.2013 - 18:15

Lea otras preguntas en las etiquetas