WordPress 插件

WordPress:用代码设置评论审核机制

WordPress的评论审核机制通常是全局的,并不那么精细。本文介绍针对特定情况设置评论审核机制的方式,不足之处还望各位读者补充,共同分享知识,互惠互利。

1. 登陆用户的评论无需审核

代码来自WordPress Answers,放到functions.php中,如果登陆用户评论,自动通过审核,未登录用户则无法通过审核。

function loggedin_approved_comment($approved)
{
    // No need to do the check if the comment is already approved anyway.
    if (!$approved) {
        if (is_user_logged_in()) {
            // Note: 1/0, not true/false
            $approved = 1;
        }
    }

    return $approved;
}

// Action allows the comment automatic approval to be over-ridden.
add_action('pre_comment_approved', 'loggedin_approved_comment');

2. 特定文章/页面评论必须审核

用户在特定文章或页面的发表评论,评论必须审核,但管理员和文章作者的评论可以自动通过审核,假设该文章/页面的ID是1。

function page_approved_comment($approved, $commentdata)
{	
	$post = get_post( $post );
	if ( !empty($post->ID) && $post->ID == 1 ) {
		$approved = 0;
		if( $user_id = $commentdata['user_id'] ){	
			$user = get_userdata( $user_id );			
			if ( $user_id == $post->post_author || $user->has_cap( 'moderate_comments' ) ){
				// The author and the admins get respect.
				$approved = 1;
			}
		}		
	}
    return $approved;
}

// Action allows the comment automatic approval to be over-ridden.
add_action('pre_comment_approved', 'page_approved_comment', 10, 2);

这里用到的判断条件是文章或页面的ID是多少

$post->ID == 1

也可以使用文章/页面名称

$post->post_title == 'post name'

或者文章/页面slug

$post->post_name == 'post-name'

或者页面类型( page, post or custom post type)

$post->post_type == 'page'

4条评论

  1. 哈哈!这篇文章估计因我的需求来写的吧,我是用了自定义字段来解决了特定页面或文章评论必须通过审核的问题。感觉比Sola姐的方法方便一点。不过第一个方法倒是很有用途

      1. 呵呵,搞的我都不好意思了。我在这就贴上吧,可以的话,编辑到帖子里面进去也可以。

        function page_comments_moderated($comment_id){
        $comment = get_comment($comment_id);
        $post_ID = $comment->comment_post_ID;
        if(get_post_meta($post_ID,’comments_moderated’,true)==1){
        wp_set_comment_status($comment_id,’hold’);
        }
        }
        add_action(‘comment_post’,’page_comments_moderated’,1);

        新建一个叫comments_moderated的自定义字段,当值等于1的时候那个文章或者页面的评论都需要通过

评论已关闭。