WordPress提供了好几种用户角色,不同角色拥有不同的权限,有的角色能访问网站后台,有的不能。如何让除了管理员都不能访问网站后台呢?一共有两个方案。第一个就是移除角色的某些权限,这个不多讲了,前面的文章中有讲过的,参阅WordPress移除用户角色添加新角色并赋予角色能力/权限。第二个方法就是将除了管理员的用户重定向,下面看看实现代码。
复制
/** * 重置非管理员用户到首页 * https://www.daimadog.org/7379.html */ function redirect_non_admin_users() { if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) { wp_redirect( home_url() ); exit; } } add_action( 'admin_init', 'redirect_non_admin_users' );
将上面的代码添加到你的主题functions.php文件中即可,为了方便,也可以做成插件,插件代码如下。
复制
<?php /* Plugin Name: WordPress只允许管理员访问后台 Description: 代码狗开发的一款插件。 Plugin URI: https://www.daimadog.org Version: 1.0.0 Author: 代码狗 Author URI: https://www.daimadog.org/ Text Domain: daimadog */ /* * The plugin was originally created by daimadog.org */ //插件菜单 add_action('admin_menu', 'dmd_htpb_submenu'); function dmd_htpb_submenu() { add_options_page(__('后台屏蔽设置'), __('后台屏蔽设置'), 'administrator', 'dmd-htpb-plugin', 'add_dmd_htpb_submenu'); } //插件配置页面 function add_dmd_htpb_submenu() { if($_POST['dmd_htpb_hidden'] == 'y') { update_option('dmd_htpb_url',$_POST['dmd_htpb_url']); ?> <div id="message" style="background-color: green; color: #ffffff;">保存成功 !</div> <?php } ?> <div> <h2>后台屏蔽设置</h2> <form action="" method="post" id="my_plugin_htpb_form"> <p> <label for="dmd_htpb_options">重定向地址:</label> </p> <p> <input name="dmd_htpb_url" style="min-width: 300px;" id="dmd_htpb_url" value="<?php echo esc_attr(get_option('dmd_htpb_url'))?>"/> </p> <p> <input type="submit" name="submit" value="保存" class="button button-primary" /> <input type="hidden" name="dmd_htpb_hidden" value="y" /> </p> </form> </div> <?php } //后台屏蔽https://www.daimadog.org/7379.html function redirect_non_admin_users() { if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) { $url=get_option('dmd_htpb_url'); if(!$url){ $url=home_url(); } wp_redirect($url); exit; } } add_action( 'admin_init', 'redirect_non_admin_users' ); ?>
到插件目录中新建一个文件夹,随意命名,然后复制上面的代码到插件目录中新建一个文件并保存,随意命名,后缀.php即可。
评论 (2)