Как сделать постраничную навигацию (пагинацию) для запроса пользователей
Не могу разобраться, не работает постраничная навигация, когда нажимаю на кнопки
<a href="?filter=pf_user_all"><i class="fa fa-user-circle"></i> Все </a>
Без фильтров работает. (без нажимание на кнопки)
сам код
<span class="version"> <a href="?filter=pf_user_all"><i class="fa fa-user-circle"></i> Все </a> <a href="?filter=pf_user_post"><i class="fa fa-address-card"></i> Журналисты</a> <a href="?filter=pf_user_comments"><i class="fa fa-graduation-cap"></i> Дикторы</a> <a href="?filter=pf_user_donation"><i class="fa fa-rub"></i> Вклад</a> <a href="?filter=pf_user_registered"><i class="fa fa-calendar"></i> Регистрация</a> </span> <div class="pf-list"> <ul style="display: flow-root;"> <?php //параметры постраничого списока $no=18; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; if($paged==1){$offset=0; }else { $offset= ($paged-1)*$no;} //приявязка данных $us_id = $user_ID; if ( is_user_logged_in() && $us_id > 0 && $us_id !== "" && is_numeric($us_id)) $user_info = get_userdata( $us_id ); $author->ID = $us_id; $user_reg = $user_info->get('user_registered'); $datetime = new DateTime($user_reg); $user_query = new WP_User_Query( array( 'orderby' => 'display_name' )); // Показывает всех //фильтры пользователей if ($_GET['filter']=='pf_user_all') {$user_query = new WP_User_Query( array('orderby' => 'display_name' ));} // Все пользователи if ($_GET['filter']=='pf_user_post') {$user_query = new WP_User_Query( array( 'orderby' => 'user_post' ));} // Пользователи с постами if ($_GET['filter']=='pf_user_comments') {$user_query = new WP_User_Query( array('orderby' => 'user_comments' ));} // Пользователи с постами if ($_GET['filter']=='pf_user_donation') {$user_query = new WP_User_Query( array('orderby' => 'donation', 'order' => 'DESC' ));} // Пользователи с вкладом if ($_GET['filter']=='pf_user_registered') {$user_query = new WP_User_Query( array('number' => $no, 'offset' => $offset, 'orderby' => 'user_registered', 'order' => 'DESC'));} // Пользователи с регистраций //сортировка по данным if ( ! empty( $user_query->results ) ) { foreach ( $user_query->results as $author ) { $args = array( 'user_id' => $author->ID, 'count' => true, 'status' => 'approve', ); $commratings = get_comments( $args ); if ($_GET['filter']=='pf_user_all'){ if ( $user ) continue; } elseif ($_GET['filter']=='pf_user_post'){ $count_posts = count_user_posts( $author->ID, 'post', true ); if ( $count_posts == 0 ) continue; } elseif ($_GET['filter']=='pf_user_comments'){ $commratings = get_comments( $args ); if ( $commratings <= 0 ) continue; } elseif ($_GET['filter']=='pf_user_donation'){ $commratings = get_comments( $args ); if ( $author->donation == 0 ) continue; } elseif ($_GET['filter']=='pf_user_registered'){ $commratings = get_comments( $args ); if ( $author->user_registered == 0 ) continue; } echo '<li class="spisok-users"><br/>'; echo '<span class="crug coloryellow" data-tooltip="Вклад "> <i class="fa fa-rub"></i> ' . ($author->donation ?: '0') . '</span><br/>'; echo '<a href="/author/?uid=' . $author->ID . '">' . get_avatar($author->ID) . '</a><br/>'; echo '<span class="color-pf-green">' . get_the_author_meta ('display_name', $author->ID) . '</span><br/><br/>'; echo '<span class="crug" data-tooltip="Статей"><i class="fa fa-eercast"></i> ' . count_user_posts($author->ID) . '</span>'; echo ' <span class="crug" data-tooltip="Сообщений"> <i class="fa fa-comments-o"></i> ' . $commratings . '</span><br/><br/>'; echo '<span class="crug color-pf-ser" data-tooltip="Регистрация"><i class="fa fa-calendar"></i> ' . (new DateTime($author->user_registered))->format('d.m.Y') . '</span>'; echo '</li>'; } } else { echo '<ol><pre>Пользователи не найдены</pre></ol>'; } ?> </ul></div> <?php //постраничый список $total_user = $user_query->total_users; $total_pages=ceil($total_user/$no); echo '<div class="pagination pf-paging-navi pf-list">' . paginate_links(array('base' => get_pagenum_link(1) . '%_%', 'format' => '?paged=%#%', 'current' => $paged, 'total' => $total_pages, 'prev_text' => '«', 'next_text' => '»', 'type' => 'list', )) . ' </div>'; ?> <p> </p>
Тебе нужно в параметры запроса добавить отступ https://wp-kama.ru/function/get_comments#offset
Его нужно высчитать в зависимости от текущей страницы пагинации и добавить в запрос...
Нужно сделать как тут https://wp-kama.ru/id_2647/kak-ispolzovat-parametr-offset-ne-lomaya-paginatsiyu.html только offset передать в параметр get_comments(). Принцип такой же...
Спасибо большое, буду пробывать
не понимаю
последняя версия Тимур не пойму
Ох ну ты и накрутил... Ты делаешь покривому немного, через фильтры тебе нужно только изменять параметры запроса. А запрос делать в одном месте кода. Для фильтров не будет работать, потому что ты в их запросы не передаешь отступ. Ну и в целом лишний код у тебя.
Примерно так надо, просто написал без каких либо тестов:
Пробую как умею
спасибо. буду переделывать)
так нужно ?
навигация не работает в других вкладках ($filter)