問題描述

有沒有一個簡單的方法來分頁來自 $ wpdb-> get_results() 的結果集?

我想在 author_archive 頁面上獲取使用者評論的分頁列表 – 社群的一些使用者具有> 500 評論,所以分頁是重要的。

有沒有一個 in-built 這樣做與 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; ?>

最佳解決方案

您可以使用功能 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
));

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。