Deseja adicionar minha consulta de preparação personalizada, mas o add_filter não é executado

4

Eu quero manipular a ordem de WP_User_Query() . Eu quero que o usuário seja ordenado por um meta campo personalizado e por ordem crescente.

Eu tenho o código corretamente testado em users.php , mas como esse não é um bom lugar para colocá-lo, eu queria executar add_filter( 'prepare_query', 'my_prepare_query');

A chamada no tema ('include' não existe):

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

Acabei de adicionar outro elseif a prepare_query na linha 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";
}

Agora, por que o add_filter não sobrescreve a função user.php ? Não é possível sobrescrever as funções principais?

    
por David Rosendo 05.02.2013 / 14:39

1 resposta

1

O WP_User_Query permite meta_query pesquisas exatamente como as outras WP_*_Query classes. Exemplo aqui:

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;
    
por kaiser 11.09.2013 / 18:15