WordPress后台禁止非管理员用户查看网站评论的方法和代码
WordPress网站后台的【评论】除了管理员可以访问浏览外,其他角色如贡献者也可以访问查看,这显然不合理且会泄露评论用户的隐私,因为谁中除了有评论内容外还有评论者的邮箱、IP或其它自定义扩展的信息。所以修改WordPress后台评论的访问权限很有必要,这里建议在后台对非管理员角色移除【评论】菜单,然后禁止非管理员角色访问。
实现代码和修改方法:
1、在当前主题的functions.php文件添加代码:
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文件继续添加代码:
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的函数:
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 );
作用:当非管理员欲访问后台的评论页面时不显示评论。