WordPress实现文章按最新评论时间排序
2014-07-16 00:00
585 查看
文章目录
一、给所有文章添加自定义字段_commentTime
二、添加相应action代码
三、query_posts更改文章排序
数据库清理脚本
"有点蓝" 读者已经不下2次在我的博客里留言想要实现这个功能了,还是满足他的这个愿望吧。WordPress的首页、分类页、标签页等存档页,默认是按照发布时间对文章进行排序的,现在想按最新评论时间排序,其实这个功能就是类似论坛的帖子列表效果,新发布的帖子置顶,有新评论的帖子也同样置顶,这样做的好处是可以增加互动,增加帖子评论数。在WordPress下也是可以实现这样的功能:
新发布(新更改)的文章排在顶部
有新评论的文章立即排到顶部
所有文章按照其最新一条评论的时间排序
实现的方法是给每篇文章添加一个自定义字段_commentTime,这个字段的值为最新一条评论的时间,然后使用query_posts函数实现所有文章按照自定义字段_commentTime的值进行排序。实现原理就这么简单,下面讲讲具体的实现方法:
一、给所有文章添加自定义字段_commentTime
给每篇文章添加这个自定义字段的目的是为了方便对文章进行排序。可能叫你手动一篇一篇文章地添加自定义字段,尤其是你有几百上千篇文章的情况下,一定会是你抓狂。不过请你放心,我不会让你用这么做,这里我写了个PHP脚本,可以帮你自动给所有文章添加字段_commentTime。使用方法:下载以下文件,然后上传到跟wp-config.php相同的目录(就是WordPress的安装目录)下,然后在浏览器中运行这个文件,如 http://WordPress的安装目录地址/meta-sql.php
二、添加相应action代码
这一步添加的代码可以实现发布新文章(或新更改)、有新评论的时候,自动添加/更新自定义字段_commentTime的值,不需要你手动干预。在你当前使用主题的functions.php中添加以下php代码:
三、query_posts更改文章排序
如果你只想实现首页的文章按最新评论时间排序,那么此步只修改主题目录下的index.php即可,如果还想修改其他存档页面如分类页、标签页等,那就修改相应的模板文件,如archive.php。
举例说明,在index.php中查找代码 if (have_posts()) 或 while (have_posts()),在上一行添加query_posts函数即可:
对archive.php的修改也一样!如果对query_posts的用法不熟悉,可以看这篇文章: WordPress函数query_posts用法汇总。
数据库清理脚本
如果某一天你不想使用这个功能了,你可以下载以下文件帮助你自动清理数据库中的无用信息,放到WordPress的安装目录下,然后在浏览器中执行一下就可以了,如http://example/meta-clear-sql.php
好了,全部教程到此就结束了,完成以上步骤后就什么都不用管了,文章就是按照最新评论时间进行排序了。如果还有问题请给我留言
一、给所有文章添加自定义字段_commentTime
二、添加相应action代码
三、query_posts更改文章排序
数据库清理脚本
"有点蓝" 读者已经不下2次在我的博客里留言想要实现这个功能了,还是满足他的这个愿望吧。WordPress的首页、分类页、标签页等存档页,默认是按照发布时间对文章进行排序的,现在想按最新评论时间排序,其实这个功能就是类似论坛的帖子列表效果,新发布的帖子置顶,有新评论的帖子也同样置顶,这样做的好处是可以增加互动,增加帖子评论数。在WordPress下也是可以实现这样的功能:
新发布(新更改)的文章排在顶部
有新评论的文章立即排到顶部
所有文章按照其最新一条评论的时间排序
实现的方法是给每篇文章添加一个自定义字段_commentTime,这个字段的值为最新一条评论的时间,然后使用query_posts函数实现所有文章按照自定义字段_commentTime的值进行排序。实现原理就这么简单,下面讲讲具体的实现方法:
一、给所有文章添加自定义字段_commentTime
给每篇文章添加这个自定义字段的目的是为了方便对文章进行排序。可能叫你手动一篇一篇文章地添加自定义字段,尤其是你有几百上千篇文章的情况下,一定会是你抓狂。不过请你放心,我不会让你用这么做,这里我写了个PHP脚本,可以帮你自动给所有文章添加字段_commentTime。使用方法:下载以下文件,然后上传到跟wp-config.php相同的目录(就是WordPress的安装目录)下,然后在浏览器中运行这个文件,如 http://WordPress的安装目录地址/meta-sql.php
二、添加相应action代码
这一步添加的代码可以实现发布新文章(或新更改)、有新评论的时候,自动添加/更新自定义字段_commentTime的值,不需要你手动干预。在你当前使用主题的functions.php中添加以下php代码:
/** * WordPress实现文章按最新评论时间排序,action代码 * 作者:露兜 * 博客:http://www.ludou.org/ * 最后修改:2014年7月16日 */ function ludou_comment_meta_add($post_ID) { // 发布新文章或修改文章,更新/添加_commentTime字段值 global $wpdb; if(!wp_is_post_revision($post_ID)) { update_post_meta($post_ID, '_commentTime', time()); } } function ludou_comment_meta_update($comment_ID) { // 发布新评论更新_commentTime字段值 $comment = get_comment($comment_ID); $my_post_id = $comment->comment_post_ID; update_post_meta($my_post_id, '_commentTime', time()); } function ludou_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', 'ludou_comment_meta_add'); add_action('delete_post', 'ludou_comment_meta_delete'); add_action('comment_post', 'ludou_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_num', // WordPress 2.8以上版本 '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
好了,全部教程到此就结束了,完成以上步骤后就什么都不用管了,文章就是按照最新评论时间进行排序了。如果还有问题请给我留言
相关文章推荐
- 搜索实现最新的文章排序在前
- 利用AJAX实现WordPress中的文章列表及评论的分页功能
- 纯代码实现wordpress文章隐藏内容评论可见
- 优化WordPress中文章与评论的时间显示
- MySQL按最新时间分组排序的实现
- wordpress文章发布到一定时间后自动关闭评论
- 利用AJAX实现WordPress中的文章列表及评论的分页功能
- 关于如何在java中实现中文首字母索引排序的问题 2016-08-25 15:14 86人阅读 评论(0) 收藏 举报 分类: Java(19) 版权声明:本文为博主原创文章,未经博主允许不得转载
- 优化WordPress中文章与评论的时间显示
- WordPress后台文章列表按更新时间排序
- 解决一个mysql关于按文章以及评论的最早时间的排序问题
- zencart产品页面调用WordPress最新文章
- DEDECMS首页调用最新评论和评论链接地址静态化实现代码
- WordPress代码实现相关文章的几种方法
- 易企建站系统如何调用wordpress最新文章?
- WordPress显示最近评论的文章列表
- 用jquery实现的简单wordpress评论回复
- 在WordPress中隐藏文章发布时间
- 文件夹中文件夹(文件)按时间排序,读取最新的文件夹(文件)
- WordPress 非插件实现文章列表分页导航