wake-up-neo.net

Fragen Sie Benutzer nach benutzerdefinierter Taxonomie und Benutzerrolle ab

Ich versuche, mit WP_User_Query() eine Benutzerabfrage zu erstellen. Ich muss die Benutzer nach dem Rollencode shop_manager und der benutzerdefinierten Taxonomie shop-category sowie der aktuellen Taxonomiebegriffs-ID filtern.

Den Code habe ich bisher:

<?php 

// WP_User_Query arguments
$args = array (
    'role'           => 'shop_manager',
    'order'          => 'DESC',
    'orderby'        => 'user_registered',
    'tax_query' => array(
    array('taxonomy' => 
    'shop-category', 
    'field' => 'id', 
    'terms' => $term_id ) ) 
);

// The User Query
$user_query = new WP_User_Query( $args );

// The User Loop
if ( ! empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {
        echo '<li><span>' . esc_html( $user->shop_name ) . '</span></li>';
    }
} else {
    // no users found
}

?>

Um die Term-ID zu erhalten, habe ich diesen Code verwendet

<?php $queried_object = get_queried_object();
$term_id = $queried_object->term_id; 

echo 'ID = '. $term_id;?>

Jetzt werden alle Benutzer mit der Rolle shop_manager angezeigt. Die Taxonomie scheint nicht zu funktionieren.

5
Erik

Anscheinend gibt es noch keine Kernimplementierung von 'tax_query' in WP_User_Query.

Überprüfen Sie das Ticket hier für weitere Informationen -> https://core.trac.wordpress.org/ticket/31383

Trotzdem gibt es eine Alternative mit get_objects_in_term

$taxonomy = 'shop-category';
$users = get_objects_in_term( $term_id, $taxonomy );    

if(!empty($users)){

    // WP_User_Query arguments
    $args = array (
        'role'           => 'shop_manager',
        'order'          => 'DESC',
        'orderby'        => 'user_registered',
        'include'        => $users
    );

    // The User Query
    $user_query = new WP_User_Query( $args );

    // The User Loop
    if ( ! empty( $user_query->results ) ) {
        foreach ( $user_query->results as $user ) {
            echo '<li><span>' . esc_html( $user->shop_name ) . '</span></li>';
        }
    } 
    else {
        // no shop_manager found 
    }
}
else {
    // no users found
}
4
RafaSashi

Es gibt keinen tax_query-Parameter für die WP_User_Query-Klasse. Da Sie die Frage mit user-meta markiert haben, kann ich nur davon ausgehen, dass Sie die ID (oder sogar den Termnamen selbst?) Eines bestimmten shop-category-Terms als Benutzermetaeintrag speichern.

In diesem Fall benötigen Sie Folgendes:

// The 'WP_User_Query' arguments array
$args = array(
    'role'          => 'shop_manager',
    'order'         => 'DESC',
    'orderby'       => 'user_registered',
    'meta_key'      => 'shop_name', // Is this the meta key you are using?
    'meta_value'    => 'the_term_name_or_term_id', // Based on however you store your meta data
    'meta_compare'  => '=',
);
2
webtoure