Paginate result set из $ wpdb-> get_results ()

Есть ли простой способ разбиения на страницы набора результатов, исходящего из $ wpdb-> get_results ()?

Я хочу получить разбитый список комментариев пользователя на странице author_archive – у некоторых пользователей сообщества есть 500 комментариев, поэтому важна разбивка на страницы.

Есть ли встроенный способ сделать это с помощью WordPress, или мне нужно его самостоятельно создать?

[Обновлено для добавления кода]

<!-- Show comments --> <?php $querystr = " SELECT comment_ID, comment_post_ID, post_title, LEFT(comment_content,100) as comment_content, comment_date_gmt FROM $wpdb->comments, $wpdb->posts WHERE user_id = $thisauthor->ID AND comment_post_id = ID AND comment_approved = 1 ORDER BY comment_ID DESC LIMIT 100 "; $comments_array = $wpdb->get_results($querystr, OBJECT); if ($comments_array): ?> <div id="author-comments-list"> <h2>Recent Comments </h2> <ul> <? $odd_even = "odd"; foreach ($comments_array as $comment): echo "<li class='$odd_even'><a href='". get_bloginfo('url') ."/?p=".$comment->comment_post_ID."/#comment-". $comment->comment_ID ."'>". $comment->post_title ."</a> : ".mysql2date('l jS F, Y, g:ia',$comment->comment_date_gmt); echo "<div class='author-comments-content'>".$comment->comment_content."</li>"; $odd_even = ($odd_even == "odd" ? "even" : "odd"); endforeach; ?> </ul> </div> <? endif; ?> 

Solutions Collecting From Web of "Paginate result set из $ wpdb-> get_results ()"

Вы можете использовать функцию paginate_links () для любой разбивки на страницы.

Для вашего конкретного случая:

 $total = $wpdb->get_var(" SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE user_id = $thisauthor->ID AND comment_post_id = ID AND comment_approved = 1 "); $comments_per_page = 100; $page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1; echo paginate_links( array( 'base' => add_query_arg( 'cpage', '%#%' ), 'format' => '', 'prev_text' => __('&laquo;'), 'next_text' => __('&raquo;'), 'total' => ceil($total / $comments_per_page), 'current' => $page )); 

для тех, кто ищет полный ответ на основе вопроса и @ sorich87 ответа.

Я думал, что должен опубликовать решение здесь, для таких людей, как я (wordpress beginner).

 //use in your custom page or custom post template global $wpdb; $per_page = 5; $page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1; if ($page > 1) { $offset = $page * $per_page - $per_page; } else { $offset = $page; } $the_post = "select id,post_title from $wpdb->posts where post_type in ('buy','rent') and post_status='publish' " . "order by id desc limit $per_page offset $offset"; $details = $wpdb->get_results($the_post, OBJECT); //do foreach to display your post details. //paste this, where you want to display the pagination $total = $wpdb->get_var("SELECT count(id) from $wpdb->posts where post_type in ('buy','rent') and post_status='publish' order by id desc"); echo paginate_links(array( 'base' => add_query_arg('cpage', '%#%'), 'format' => '', 'prev_text' => __('&laquo;'), 'next_text' => __('&raquo;'), 'total' => ceil($total / $per_page), 'current' => $page )); 

это то, как я получил его работу на моем сайте WordPress