Подскажите как вывести 5 последних зарегистрированных пользователей в Wordpress
Пожалуйста, подскажите как вывести 5 последних зарегистрированных пользователей в блоке на странице. Мне необходимо чтобы выводился список в формате ul > li в кадлом отдельном li была ссылка на профиль этого пользователя в ней указаны get_avatar( $q->ID, 80 ) который выводит аватар пользователя и user_lastname (фамилия), user_firstname (имя), surname (отчество) вот такая конструкция. Я уже 3 дня не могу сообразить, опыт маленький к сожалению. Я нашел почему то только 1 пример в интернете но я не могу его переделать под себя. не выводится там user_lastname, user_firstname, surname пример который я нашел прикрепляю, может он кому и пригодится:
function recently_registered_users() {
global $wpdb;
$recentusers = '<ul class="recently-user">';
$usernames = $wpdb->get_results( "SELECT * FROM $wpdb->users ORDER BY ID DESC LIMIT 5" );
foreach ( $usernames as $username ) {
if ( !$username->user_url ) :
$recentusers .= '<li>' .get_avatar( $username->user_email, 80 ) .$username->user_nicename."</a></li>";
else :
$recentusers .= '<li>' .get_avatar( $username->user_email, 80 ).'<a href="'.$username->user_url.'">'.$username->user_nicename."</a></li>";
endif;
}
$recentusers .= '</ul>';
return $recentusers;
}
add_shortcode( 'block_new_users', 'recently_registered_users' );
Сейчас смог из г**на и палок собрать вот такой код но почему то он не показывает фио как планировалось, можете подсказать что не правильно делаю
<?php
$number = 5;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 0;
$users = get_users();
$query = get_users('&offset='.$offset.'&number='.$number);
$total_users = count($users);
echo '<ul id="sz-users_ul" class="clearfix">';
foreach($query as $q) { ?>
<li class="sz-users_li clearfix">
<div class="sz-user-avatar">
<?php echo get_avatar( $q->ID, 80 ); ?>
</div>
<div class="sz-user-data">
<h4 class="sz-user-name">
<a href="<?php echo get_author_posts_url($q->ID);?>">
<?php echo get_the_author_meta('user_lastname', $q->ID);?> <?php echo get_the_author_meta('user_firstname', $q->ID);?> <?php echo get_the_author_meta('surname', $q->ID);?>
</a>
</h4>
<?php if (get_the_author_meta('service', $q->ID) != '') : ?>
<p><?php echo get_the_author_meta('service', $q->ID); ?></p>
<?php endif; ?>
</div>
</li>
<?php }
echo '</ul>';
?>
Ответы (2 шт):
Вот что у меня получилось вдруг кому то пригодится. Код позволяет создать шорт код для вывода пяти последних зарегистрированых пользователей. Но дело в том что так и не получилось вывести место ника пользователя его ФИО . это для меня проблема но кому то может пригодится и так
/**
* Создает виджет со списком новых пользователей
* он размещается где необходимо по шорткоду [block_new_users]
*/
function recently_registered_users() {
global $wpdb;
$recentusers = '<ul class="recently-user">';
$usernames = $wpdb->get_results( "SELECT * FROM $wpdb->users ORDER BY ID DESC LIMIT 5" );
foreach ( $usernames as $username ) {
if ( !$username->user_nicename ) :
$recentusers .= '<li><a href="/author/'.$username->user_nicename.'">' .get_avatar( $username->user_email, 80 ) .$username->user_nicename."</a></li>";
else :
$recentusers .= '<li><a href="/author/'.$username->user_nicename.'">' .get_avatar( $username->user_email, 80 ) .$username->user_nicename."</a></li>";
endif;
}
$recentusers .= '</ul>';
return $recentusers;
}
add_shortcode( 'block_new_users', 'recently_registered_users' );
Давайте разберемся в Вашем коде с get_users(), как Вам и сказали, вариант с $wpdb
в Вашем случае не лучший, так как Вы не совсем понимаете что конкретно нужно делать и как было сказано, это обычно крайний вариант.
Код может иметь такой вид:
<?php
$users = get_users([
'number' => 5,
'orderby' => 'registered',
'order' => 'DESC'
]);
if (!empty($users)) : ?>
<ul id="sz-users_ul" class="clearfix">
<?php foreach($users as $user) : ?>
<li class="sz-users_li clearfix">
<div class="sz-user-avatar">
<?php echo get_avatar($user->ID, 80); ?>
</div>
<div class="sz-user-data">
<h4 class="sz-user-name">
<a href="<?php echo get_author_posts_url($user->ID);?>">
<?php echo get_the_author_meta('user_lastname', $user->ID); ?> <?php echo get_the_author_meta('user_firstname', $user->ID); ?>
</a>
</h4>
</div>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
Вы можете использовать 'orderby' => 'registered'
как указано в документации. Обратите внимание, что я убрал поля surname
и service
так как по умолчанию, таких полей нет, список полей которые можно использовать можно прочесть здесь. Если подскажете что это за поля и каким образом Вы их добавили в профиль, я смогу подсказать как их можно получить. Предположу что это мета поля, получить их можно используя get_user_meta(), например get_user_meta($user_id, 'service', true);
.