WordPress实现文章按最新评论时间排序

WordPress实现文章按最新评论时间排序,第1张

概述WordPress的首页、分类页、标签页等存档页,默认是按照发布时间对文章进行排序的,现在想按最新评论时间排序,其实这个功能就是类似论坛的帖子列表效果,新发布的帖子置顶,有新评论的帖子也同样置顶,这样做的好处是可以增加互动,增加帖子评论数。在WordPress下也是可以实现这样的功能: 新…

wordpress的首页、分类页、标签页等存档页,默认是按照发布时间对文章进行排序的,现在想按最新评论时间排序,其实这个功能就是类似论坛的帖子列表效果,新发布的帖子置顶,有新评论的帖子也同样置顶,这样做的好处是可以增加互动,增加帖子评论数。在wordpress下也是可以实现这样的功能:

新发布(新更改)的文章排在顶部 有新评论的文章立即排到顶部 所有文章按照其最新一条评论的时间排序

实现的方法是给每篇文章添加一个自定义字段commentTime,这个字段的值为最新一条评论的时间,然后使用query_posts函数实现所有文章按照自定义字段commentTime的值进行排序。实现原理就这么简单,下面讲讲具体的实现方法:

一、给所有文章添加自定义字段commentTime

给每篇文章添加这个自定义字段的目的是为了方便对文章进行排序。可能叫你手动一篇一篇文章地添加自定义字段,尤其是你有几百上千篇文章的情况下,一定会是你抓狂。不过请你放心,我不会让你用这么做,这里我写了个PHP脚本,可以帮你自动给所有文章添加字段commentTime。使用方法:下载以下文件,然后上传到跟wp-config.php相同的目录(就是wordpress的安装目录)下,然后在浏览器中运行这个文件,如 http://example/Meta-sql.PHP

下载地址:Meta-sql.PHP

二、添加相应action代码

这一步添加的代码可以实现发布新文章(或新更改)、有新评论的时候,自动添加/更新自定义字段commentTime的值,不需要你手动干预。在你当前使用主题的functions.PHP中添加以下PHP代码:

function comment_Meta_add($post_ID) {
// 发布新文章或修改文章,更新/添加commentTime字段值
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
if( !update_post_Meta($post_ID,'commentTime',time()) ) {
add_post_Meta($post_ID,time());
}
}
}

function comment_Meta_update($comment_ID) {
// 发布新评论更新commentTime字段值
$comment = get_comment($comment_ID);
$my_post_ID = $comment->comment_post_ID;
update_post_Meta($my_post_ID,time());
}

function comment_Meta_delete($post_ID) {
// 删除文章同时删除commentTime字段
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
delete_post_Meta($post_ID,'commentTime');
}
}
add_action('save_post','comment_Meta_add');
add_action('delete_post','comment_Meta_delete');
add_action('comment_post','comment_Meta_update');三、query_posts更改文章排序

如果你只想实现首页的文章按最新评论时间排序,那么此步只修改主题目录下的index.PHP即可,如果还想修改其他存档页面如分类页、标签页等,那就修改相应的模板文件,如archive.PHP。

举例说明,在index.PHP中查找代码 if (have_posts())while (have_posts()),在上一行添加query_posts函数即可:

if(!$wp_query)
global $wp_query;

$args = array(
'Meta_key' => 'commentTime',
'orderby' => Meta_value,
'order' => DESC
);
$args = array_merge( $args,$wp_query->query );
query_posts($args);

对archive.PHP的修改也一样!如果对query_posts的用法不熟悉,可以看这篇文章: wordpress函数query_posts用法汇总。

数据库清理脚本

如果某一天你不想使用这个功能了,你可以下载以下文件帮助你自动清理数据库中的无用信息,放到wordpress的安装目录下,然后在浏览器中执行一下就可以了,如http://example/Meta-clear-sql.PHP

下载地址:Meta-clear-sql.PHP

好了,全部教程到此就结束了,完成以上步骤后就什么都不用管了,文章就是按照最新评论时间进行排序了。

总结

以上是内存溢出为你收集整理的WordPress实现文章按最新评论时间排序全部内容,希望文章能够帮你解决WordPress实现文章按最新评论时间排序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/1003158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存