Como encontrar objetos por termos

4

Estou lutando com uma filtragem de pesquisa. Em primeiro lugar, meu script está procurando usuários usando SQL de pesquisa natural. A consulta retorna ids de usuários. Agora eu gostaria de filtrá-los por termos que são atribuídos a cada usuário. Eu usei isso:

 $terms_ids = array();
 $terms_ids = $_GET['user_sport'];
 $objects = get_objects_in_term($terms_ids, 'user_sport');
 $unique = array_unique($objects);
 print_r($unique);

Mas esta função get_objects_in_term retorna todos os objetos que possuem pelo menos um termo. O que eu quero alcançar é o oposto. Se um usuário tiver futebol como um termo e não tiver basquete, ele não deverá ser exibido quando eu filtrar usuários com futebol e basquete. Só se eu usar futebol. Existe alguma maneira de resolver este problema? Outra abordagem seria a segunda consulta SQL, mas descobri relações de termos e taxonomias um pouco estranhas apenas para escrever uma consulta SQL.

    
por El Danielo 27.06.2016 / 17:13

1 resposta

1

Supondo que "usuários" que você está tentando extrair é um tipo de postagem personalizado. Você pode usar "tax_query" como abaixo.

$user_args = array(
    'post_type'         => 'custom_user_post',  // Custom post type,
    'posts_per_page'    => 10,
    'paged'             => ( ! empty( get_query_var( 'paged' ) )? get_query_var('paged'): 1 ),
    'tax_query'         => array(
        'relation' => 'AND',
            array(
                'taxonomy'      => 'user_sports', //assuming your custom taxonomy is 'user_sport'
                'field'         =>  'slug',
                'terms'         =>  array( 'football' )
            ),
            array(
                'taxonomy'      => 'user_sports', //assuming your custom taxonomy is 'user_sport'
                'field'         =>  'slug',
                'terms'         =>  array( 'basketball' )
            )
    )
);

$users_list = new WP_Query( $user_args );
    
por Bhaskar K C 17.11.2016 / 13:25