WP Comment Query 是 WordPress 用來(lái)查詢(xún)?cè)u(píng)論的類(lèi),在本站之前的文章WordPress 評(píng)論查詢(xún)類(lèi) WP Comment Query 參考文檔 中,我介紹了 WP Comment Query 類(lèi)的詳細(xì)參數(shù),使用 WP Comment Query 類(lèi),我們可以實(shí)現(xiàn)各種各樣的評(píng)論查詢(xún),下面,我們來(lái)看一下怎么用 WP Comment Query 類(lèi)建立帶分頁(yè)功能的自定義評(píng)論列表。
首先,獲取評(píng)論分頁(yè)需要的數(shù)據(jù)
首先,我們需要獲取評(píng)論分頁(yè)所需要的數(shù)據(jù),包括總評(píng)論數(shù)量、每頁(yè)顯示的評(píng)論數(shù)量、當(dāng)前頁(yè)數(shù)這三個(gè)數(shù)據(jù)。
$user = wizhi_get_current_user();
// 當(dāng)前頁(yè)碼, 注意這里的查詢(xún)參數(shù),不能用paged,會(huì)和文章的分頁(yè)參數(shù)沖突
$paged = isset( $_GET[ 'cmpage' ] ) ? $_GET[ 'cmpage' ] : 1;
// 總頁(yè)數(shù)
$total = get_user_comments_count( $user->ID );
//每頁(yè)顯示的評(píng)論數(shù)量
$number = 6;
$offset = ( $paged - 1 ) * $number;
// 評(píng)論查詢(xún)類(lèi) WP Comment Query 的參數(shù)
$args = [
'user_id' => $user->ID,
'number' => $number,
'offset' => $offset,
];
// 評(píng)論查詢(xún)實(shí)例
$comments_query = new WP_Comment_Query( $args );
$comments = $comments_query->comments;
// 當(dāng)前獲取的評(píng)論數(shù)據(jù)
$current_count = count( $comments );
顯示 WP Comment Query 查詢(xún)到的評(píng)論
也就是評(píng)論列表里面顯示的評(píng)論內(nèi)容,可以有評(píng)論作者頭像、評(píng)論作者昵稱(chēng)等數(shù)據(jù),因?yàn)樽鳛槭纠褂?,這里就不再輸出詳細(xì)的數(shù)據(jù)了,只輸出評(píng)論內(nèi)容作為演示。
if ( $comments ) {
foreach ( $comments as $comment ) {
echo $comment->comment_content;
}
}
根據(jù)查詢(xún)數(shù)據(jù)顯示分頁(yè)鏈接
直接顯示下一頁(yè)鏈接
如果不需要數(shù)字分頁(yè)的方式,可以直接顯示下一頁(yè)的鏈接,顯示上一頁(yè)鏈接的方式類(lèi)似。
// 如果當(dāng)前獲取的評(píng)論評(píng)論數(shù)量和每頁(yè)顯示的評(píng)論數(shù)量相等,說(shuō)明不是最后一頁(yè),顯示下一頁(yè)鏈接。
if ( $number == $current_count ) {
echo '<a class="button" href="?tab=reply&paged=' . ( $paged + 1 ) . '">下一頁(yè)</a>';
}
顯示數(shù)字分頁(yè)鏈接
如果需要顯示上一頁(yè)和下一頁(yè)鏈接,直接使用 WordPress 的?paginate_links 函數(shù)即可,這個(gè)函數(shù)的使用在本站文章?WordPress 創(chuàng)建帶分頁(yè)功能的用戶(hù)列表?中就有使用,在評(píng)論分頁(yè)中的使用方法是類(lèi)似的。
// 獲取當(dāng)前頁(yè)面
$current_page = max( 1, $paged );
$max_num_pages = intval( $total / $number ) + 1;
// 顯示分頁(yè)鏈接
echo paginate_links( [
'base' => get_permalink( $pid ) . '%_%',
'format' => '?cmpage=%#%',
'current' => $current_page,
'total' => $max_num_pages,
'type' => 'list',
'prev_text' => __( '? 上一頁(yè)' ),
'next_text' => __( '下一頁(yè) ?' ),
'end_size' => 2,
'mid-size' => 3,
] );
其實(shí)在 WordPress 中,實(shí)現(xiàn)分頁(yè)很簡(jiǎn)單,除了 WordPress 的各種查詢(xún)類(lèi)都已經(jīng)很好的支持了創(chuàng)建分頁(yè)數(shù)據(jù)所需要的參數(shù),只要我們給響應(yīng)的參數(shù)提供適當(dāng)?shù)臄?shù)據(jù)即可,下次遇到類(lèi)似需要的時(shí)候,可以動(dòng)手嘗試一下。


