WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Список пользователей с пагинацией

Помогите пожалуйста. Вывожу список пользователей. Их много.
Получается их только ограничить по количеству. Как можно сделать с разбивкой на страницы. (1,2,3)

<?php

	$us_id = $_GET['uid'];
  if ( is_user_logged_in() && $us_id > 0 && $us_id !== "" && is_numeric($us_id)) {

  // показываем данные пользователя
  $user_info = get_userdata( $us_id );

}

function contributors() {

global $wpdb;
$authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users WHERE display_name <> 'admin' ORDER BY display_name");

// // сколько выдводить
// $authors = new WP_User_Query( array( 'number' => 88888 ) );
//
// /* Пустой объект нам ни к чему, поэтому создаем эту проверку */
// if ( ! empty( $authors->results ) ) {
//
// /* Запускаем цикл (актуально только если параметр fields = all  (он стоит по умолчанию) или all_with_meta     */
// foreach ( $authors->results as $author ) {

foreach ( $authors as $author ) {

  echo "<li class='spisok-users'>";
  echo "<p></p>";
  echo '<a href="/account/?uid=' . $author->ID . '">' . get_avatar($author->ID);
  echo "<p></p>";
  echo '<div>';
  echo '<span class="color-pf-green">' . get_the_author_meta ('display_name', $author->ID) . '</span></a>';

  echo "</div>"; echo "</li>";
  }}

?>

<div id="authorlist"><ul> <?php contributors(); ?></ul></div>
0
pfilan
9 дней назад 22
  • 1
    stepan1328 www.weblancer.net/users/stepanko/?affili...
    pfilan 8 дней назад

    спасибо, буду разбираться

    pfilan 3 дня назад

    сделал, спасибо stepan

    <ul>
     <?php
    
     $no=15;// total no of author to display
    
    	$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    	if($paged==1){
    	  $offset=0;
    	}else {
    	   $offset= ($paged-1)*$no;
    	}
    
    	global $wpdb;
    	$authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users WHERE display_name <> 'admin' ORDER BY display_name");
    
    	$us_id = $_GET['uid'];
    
    	if ( is_user_logged_in() && $us_id > 0 && $us_id !== "" && is_numeric($us_id)) {
    
    	// количество комментарии
    	$args = array('user_id' => $_GET['uid'], 'count'   => true, 'status'   => 'approve',); $commratings = get_comments( $args );
    
    	 } else {
    
    	$us_id = $user_ID;
    	$args = array('user_id' => $us_id,'count'   => true, 'status' => 'approve',); $commratings = get_comments($args);
    	  }
    
     $user_query = new WP_User_Query( array( 'number' => $no, 'offset' => $offset ) );
    
    if ( ! empty( $user_query->results ) ) {
     foreach ( $user_query->results as $author ) {
    
    	  echo "<li class='spisok-users'>";
    	  echo '<br/><a href="/account/?uid=' . $author->ID . '">' . get_avatar($author->ID) . '<p></p><span class="color-pf-green">' . get_the_author_meta ('display_name', $author->ID) . '</span></a><br/>';
    	  echo '<a href="/?author=' . $author->ID . '">' . '<span data-tooltip="Статей"><i class="fa fa-eercast"></i> ' . count_user_posts($author->ID) . '</span></a>';
    	  echo '  <span data-tooltip="Комментариев"> <i class="fa fa-comments-o"></i> '  .  $commratings  . '</span>'; // не работает
    	  echo '</li>';
       // echo die('test');
    	}
    		} else {
    			echo 'No users found.';
    		}
     ?>
    </ul>
    <?php
    			$total_user = $user_query->total_users; $total_pages=ceil($total_user/$no);
    
    			  echo paginate_links(array(
    				  'base' => get_pagenum_link(1) . '%_%',
    				  'format' => '?paged=%#%',
    				  'current' => $paged,
    				  'total' => $total_pages,
    				  'prev_text' => '«',
    				  'next_text' => '»',
    				  'type'     => 'list',
    				));
    ?>
    Комментировать
  • 0
    Kama8431

    Указывай в запросе limit и offset. А также используй paginate_links(), чтобы вывести пагинацию.

    В описании по ссылке есть пример "Пример с произвольным запросом WP_Query", по аналогии можно сделать и для get_users().

    pfilan 9 дней назад

    что-то в этом роде ?

    $per_page = 50;
    $pagenum = $_GET['pagenum'] ?? 1;
    $offset = ($pagenum - 1) * $per_page;
    $paged_url_patt = home_url( preg_replace( '/[?&].*/', '', $_SERVER['REQUEST_URI'] ) ) .'?pagenum=%#%';
    
    $query    = new WP_Comment_Query;
    $comments = $query->query( [
    	'order'   => 'DESC',
    	'user_id' => $user_id,
    	'offset'  => $offset,
    	'number'  => $per_page,
    	'no_found_rows'  => false,
    ] );
    
    //$total_comments = (int) $query->found_comments;
    $max_pages      = (int) $query->max_num_pages;
    
    $paginate_links = paginate_links( [
    	'base'    => $paged_url_patt,
    	'current' => $pagenum,
    	'total'   => $max_pages
    ] );
    
    echo $paginate_links;
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация