WordPress后台禁止非管理员用户查看网站评论的方法和代码

WordPress教程 579

WordPress网站后台的【评论】除了管理员可以访问浏览外,其他角色如贡献者也可以访问查看,这显然不合理且会泄露评论用户的隐私,因为谁中除了有评论内容外还有评论者的邮箱、IP或其它自定义扩展的信息。所以修改WordPress后台评论的访问权限很有必要,这里建议在后台对非管理员角色移除【评论】菜单,然后禁止非管理员角色访问。

实现代码和修改方法:

1、在当前主题的functions.php文件添加代码:

1
2
3
4
5
6
function remove_edit_comments_menu() {
	if ( ! current_user_can( 'manage_options' ) ) {
		remove_menu_page( 'edit-comments.php' );
	}
}
add_action( 'admin_menu', 'remove_edit_comments_menu' );

作用:通过current_user_can函数判断当前登录用户是否拥有管理权限,如果没有,则不显示左侧的【评论】入口。

2、接着在functions.php文件继续添加代码:

1
2
3
4
5
6
7
function restrict_edit_comments_page() {
	if ( ! current_user_can( 'manage_options' ) && strpos( $_SERVER['REQUEST_URI'], '/wp-admin/edit-comments.php') !== false ) {
		wp_redirect( admin_url() );
		exit;
	}
}
add_action( 'admin_init', 'restrict_edit_comments_page' );

作用:当非管理员欲访问后台的评论页面时,自动跳转到WordPress后台首页。因为步骤1只是把评论页面的入口隐藏,直接在浏览器输入评论页面链接还是可以访问的。

如果不想跳转,直接不显示评论,可以用下面的函数替换上面步骤2的函数:

1
2
3
4
5
6
7
8
function edit_comments_page_blank( $clauses, $wp_query ) {
	global $wpdb;
	if( ! current_user_can( 'manage_options' ) ) {
		$clauses['where'] .= " AND {$wpdb->prefix}comments.comment_type != 'comment'";
	}
	return $clauses;
}
add_filter( 'comments_clauses', 'edit_comments_page_blank', 10, 2 );

作用:当非管理员欲访问后台的评论页面时不显示评论。

精品推荐: