Cum pot obține o listă a utilizatorilor după rolul lor?

4 mar. 2016, 07:10:49
Vizualizări: 73K
Voturi: 20

Cum pot obține o listă a tuturor utilizatorilor din WordPress după rolul sau capabilitățile lor?

De exemplu:

  • Afișarea listei tuturor abonaților în WordPress.
  • Afișarea listei tuturor autorilor în WordPress.
  • Afișarea listei tuturor editorilor în WordPress.
0
Toate răspunsurile la întrebare 4
1
36

Pot exista diferite metode de a face acest lucru, dar cea mai corectă metodă este următoarea.

<?php

$args = array(
    'role'    => 'Rolul dorit se introduce aici.',
    'orderby' => 'user_nicename',
    'order'   => 'ASC'
);
$users = get_users( $args );

echo '<ul>';
foreach ( $users as $user ) {
    echo '<li>' . esc_html( $user->display_name ) . '[' . esc_html( $user->user_email ) . ']</li>';
}
echo '</ul>';

?>
4 mar. 2016 07:10:49
Comentarii

Doar voiam să adaug (pentru că mi-a luat ceva timp să-mi dau seama): pentru oricine încearcă să folosească asta într-un shortcode (unde trebuie să returnezi în loc să folosești echo), poți urma exemplul aici pentru a utiliza bufferizarea output-ului.

Jon Fergus Jon Fergus
24 mai 2020 01:54:48
0

Aici este o abordare simplă pentru gruparea rolurilor.

$wp_roles = wp_roles();
$result   = count_users();

foreach ( $result['avail_roles'] as $role => $count )
{
    if ( 0 == $count )
        continue; //sărim peste rolul fără utilizatori

    $args = array(
        'role' => $role
    );

    $users = get_users( $args );
    $user  = array();
    for ( $i = 0; $i < $count ; $i++ )
        $user[] = esc_html( $users[ $i ]->display_name ); //afișăm numele de afișare

    //afișare rezultate
    echo wp_sprintf( '<h2>%1$s</h2><ul><li>%2$s</li></ul>',
        esc_html( $wp_roles->role_names[ $role ] ),
        implode( '</li><li>', $user )
    );
}
4 mar. 2016 15:37:57
0

Când găsiți utilizatori cu Roluri din Plugin-ul Ultimate Member, trebuie să adăugați "um_" înaintea valorii rolului. De exemplu, dacă ați creat rolul "Client" în Plugin-ul Ultimate Membership, atunci $args ar trebui să fie

$args = array(
    'role'    => 'um_client',
    'orderby' => 'user_nicename',
    'order'   => 'ASC'
);
29 feb. 2020 08:17:22
0

Extinzând răspunsul lui Raja, ai putea de asemenea să scrii o funcție helper care să gestioneze asta pentru tine:

<?php
# Acest cod se adaugă în functions.php
function get_users_by_role($role, $orderby, $order) {
    $args = array(
        'role'    => $role,
        'orderby' => $orderby,
        'order'   => $order
    );

    $users = get_users( $args );

    return $users;
}
?>

Apoi, pentru a obține utilizatorii după un rol specific, poți face simplu:

<?php $users = get_users_by_role('Rolul tău', 'user_nicename', 'ASC'); ?>
9 iul. 2019 14:43:09