it-swarm.com.de

So finden Sie Objekte anhand von Begriffen

Ich habe Probleme mit einer Suchfilterung. Erstens sucht mein Skript nach Benutzern mithilfe von SQL für die natürliche Suche. Die Abfrage gibt die IDs der Benutzer zurück. Jetzt möchte ich sie nach Begriffen filtern, die jedem Benutzer zugeordnet sind. Ich habe das benutzt:

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

Diese Funktion get_objects_in_term gibt jedoch jedes Objekt zurück, das mindestens einen Term hat. Was ich erreichen möchte, ist das Gegenteil. Wenn ein Benutzer Fußball als Begriff hat und keinen Basketball hat, sollte er nicht angezeigt werden, wenn ich Benutzer mit Fußball und Basketball filtere. Nur wenn ich Fußball benutze. Gibt es eine Möglichkeit, dieses Problem zu lösen? Ein anderer Ansatz wäre die zweite SQL-Abfrage, aber ich fand die Beziehungen zwischen Begriffen und Taxonomien etwas seltsam, nur um eine SQL-Abfrage zu schreiben.

3
El Danielo

Angenommen, "Benutzer", die Sie ziehen möchten, sind benutzerdefinierte Beitragstypen. Sie können "tax_query" wie folgt verwenden.

$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 );
1
Bhaskar K C