Cómo encontrar objetos por términos

4

Estoy luchando con un filtro de búsqueda. En primer lugar, mi script está buscando usuarios que utilizan SQL de búsqueda natural. La consulta devuelve ids de usuarios. Ahora me gustaría filtrarlos por términos asignados a cada usuario. Utilicé esto:

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

Pero esta función get_objects_in_term devuelve todos los objetos que tienen al menos un término. Lo que quiero lograr es lo contrario. Si un usuario tiene el fútbol como término y no tiene baloncesto, no debería mostrarse cuando filtre a los usuarios con fútbol y baloncesto. Solo si uso fútbol. ¿Hay alguna manera de resolver este problema? Otro enfoque sería la segunda consulta SQL, pero descubrí que las relaciones entre términos y taxonomías son un poco raras para escribir consultas SQL.

    
pregunta El Danielo 27.06.2016 - 17:13

1 respuesta

1

Suponiendo que los "usuarios" que intenta extraer son un tipo de publicación personalizada. Puede usar "tax_query" como se muestra a continuación.

$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 );
    
respondido por el Bhaskar K C 17.11.2016 - 13:25

Lea otras preguntas en las etiquetas