纯代码实现WordPress一键开启/关闭评论功能
在 wordpress 的后台设置中有一键开启/关闭新文章的评论权限,或者对旧文章设置发布多少天后文章的评论功能自动关闭,但是最少可以设置为一天时间,这样就不够灵活了不友好不能满足我们一键关闭的目的,比如几个小时以前发布的文章就无法执行批量关闭评论了。今天小编分享一下纯代码实现WordPress一键开启/关闭评论功能。
方法一
根据文章发布的时间来自动关闭文章的评论功能,对于旧文章可以稍微灵活一点使用以下方法:
/**
* WordPress一键关闭/开启评论功能
* 超过限制天数或小时数后自动关闭WordPress文章的评论功能
*/
function lxtx_close_comments( $posts ) {
if ( !is_single() ) { return $posts; }
if ( time() – strtotime( $posts[0]->post_date_gmt ) > ( 30 * 24 * 60 * 60 ) ) {
$posts[0]->comment_status = ‘closed’;
$posts[0]->ping_status = ‘closed’;
}
return $posts;
}
add_filter( ‘the_posts’, ‘lxtx_close_comments’ );
上面的代码的作用是,文章发布超过 30 天后,就自动关闭这篇文章的评论功能。你可以根据自己的需要,修改第四行,改为多少天数或小时数。
方法二
根据文章的评论数量来自动关闭文章的评论功能,这个方法也不错:当评论达到一定数量后自动关闭 WordPress 文章的评论功能:
/**
* WordPress一键关闭/开启评论功能
* 当评论达到一定数量后自动关闭WordPress文章的评论功能
*/
function lxtx_disable_comments( $posts ) {
if ( !is_single() ) {
return $posts;
}
if ( $posts[0]->comment_count > 100 ) {
$posts[0]->comment_status = ‘disabled’;
$posts[0]->ping_status = ‘disabled’;
}
return $posts;
}
add_filter( ‘the_posts’, ‘lxtx_disable_comments’ );
方法三
数据库语句方法来批量关闭或打开已发布文章的评论功能,这个是对旧文章的评论功能的操作。因为是直接操作数据库,故建议在操作前备份数据库先:
批量关闭评论:
UPDATE wp_post SET comment_status=’close’
批量打开评论:
UPDATE wp_post SET comment_status=’open’
一键关闭/开启
注意,这个方法会一键关闭/开启所有文章/页面的评论功能,不论是新文章/页面还是旧文章/页面哦。
/**
* WordPress一键关闭/开启评论功能
*/
function close_open_comments( $posts ) {
$postids = array(‘110′,’119’);
if ( !empty( $posts ) && is_singular() && !in_array($posts[0]->ID,$postids) ) {
$posts[0]->comment_status = ‘closed’;
$posts[0]->post_status = ‘closed’;
}
return $posts;
}
add_filter( ‘the_posts’, ‘close_open_comments’ );
当然,你可能会想保留 ID 为 110 和 119(留言板或友情链接)等文章或页面的评论功能,则自行对第 6 行进行发挥。