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

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

Eu tenho o código corretamente trabalhando testado em users.php mas como este 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 ); 

Eu simplesmente adicionei outro elseif para prepare_query na linha 433 do 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 substitui a function user.php ? Não é possível replace as funções principais?

Solutions Collecting From Web of "Desejo adicionar minha consulta de preparação personalizada, mas add_filter não é executado"

O WP_User_Query permite pesquisas de meta_query exatamente como as outras classs WP_*_Query . 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 eg '>', '< ', 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;