在WordPress的后台设置中,虽然提供了开启或关闭新文章评论的选项,以及设定文章发表后的评论关闭时间,但这些设置并不够灵活。例如,无法一键关闭几小时前发布的文章的评论,或者针对特定文章进行操作。下面,我们将介绍三种纯代码方法来实现WordPress中一键打开或关闭评论功能。
方法一:
此方法允许你自定义文章发表后自动关闭评论的时间。以下代码将自动在文章发布30天后关闭其评论:
“`php
function auto_close_comments($posts) {
if (!is_single()) {
return $posts;
}
$time_threshold = strtotime(‘-30 days’);
if (time() > $time_threshold && strtotime($posts[0]->post_date_gmt) comment_status = ‘closed’;
$posts[0]->ping_status = ‘closed’;
}
return $posts;
}
add_filter(‘the_posts’, ‘auto_close_comments’);
“`
你可以调整“’-30 days”这部分来改变时间限制。
方法二:
另一种方法是当文章评论数达到特定数量时自动关闭评论:
“`php
function disable_comments_by_count($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’, ‘disable_comments_by_count’);
“`
在这里,你可以修改“100”为所需的评论数量阈值。
方法三:
通过直接操作数据库批量关闭或开启评论:
– 批量关闭评论:
`UPDATE wp_posts SET comment_status=’closed’`
– 批量打开评论:
`UPDATE wp_posts SET comment_status=’open’`
请务必在执行此类操作前备份数据库。此方法会影响所有文章和页面的评论状态。
“`php
function toggle_comments($posts) {
$excluded_ids = array(‘110’, ‘119’); // 自定义要排除的文章ID
if (!empty($posts) && is_singular() && !in_array($posts[0]->ID, $excluded_ids)) {
$posts[0]->comment_status = ‘closed’;
$posts[0]->ping_status = ‘closed’;
}
return $posts;
}
add_filter(‘the_posts’, ‘toggle_comments’);
“`
在上述代码中,你可以根据需要修改第六行的ID数组,以保留某些特定文章的评论功能。
这三种方法提供了更大的灵活性,可以根据具体需求一键管理WordPress中的评论功能。