修改 WordPress 自定義文章類型的迴響排序

我們都知道,WordPress 默認自帶瞭文章(post)、頁面(page)等文章類型,然後從 3.0 開始就支援自定義文章類型。比如WordPress大學目前所使用的問答功能,其實就是使用自定義文章類型的。在這個 DW Question & Answer 問答外掛中,它註冊瞭“dwqa-question”和“dwqa-answer”兩種文章類型,並且為它們添加瞭迴響功能,這樣就可以對問題和回答進行迴響。

而文章和頁面也有迴響功能,在實際使用中,在 設置 – 討論  中設置迴響分頁,並且在頁面頂部顯示新的迴響

comment-sort_wpdaxue_com

由於這個是全局設置,導致問答頁面的迴響也在頂部顯示新的迴響,這樣看起來就有些怪怪的:

comment-sort-1_wpdaxue_com

我希望專門針對問答頁面實現頁面頂部顯示老的迴響,如下,這樣看起來就好些瞭:

comment-sort-2_wpdaxue_com

查閱瞭一下官方文檔,發現有一個 comments_array 鉤子,可以用來排序迴響,同時借用php函數 array_reverse() 就可以將迴響倒序,從而達到所需效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* 讓問答的迴響和文章的迴響排序顛倒
* https://www.wpdaxue.com/wordpress-reverse-comments.html
*/
function wpdx_reverse_comments($comments) {
	global $post;
	if($post->post_type == 'dwqa-question' || $post->post_type == 'dwqa-answer' ){
		//如果是 dwqa-question 或 dwqa-answer 這兩個文章類型的迴響就顛倒排序
		return array_reverse($comments);
	}else{
		//否則正常排序
		return $comments;
	}
}
add_filter ('comments_array', 'wpdx_reverse_comments');

/**
* 讓問答的迴響和文章的迴響排序顛倒
* https://www.wpdaxue.com/wordpress-reverse-comments.html
*/
function wpdx_reverse_comments($comments) {
global $post;
if($post->post_type == ‘dwqa-question’ || $post->post_type == ‘dwqa-answer’ ){
//如果是 dwqa-question 或 dwqa-answer 這兩個文章類型的迴響就顛倒排序
return array_reverse($comments);
}else{
//否則正常排序
return $comments;
}
}
add_filter (‘comments_array’, ‘wpdx_reverse_comments’);

以上就是具體例子,大傢參考一下即可。

發佈留言