如果用户不是超级管理员,如何限制管理页面?

时间:2018-03-17 作者:Galgóczi Levente

我在我的多站点上使用了All-In-One Seo包,但是这个插件有管理页面,什么不属于限制用户访问插件页面的规则范围,所以我使用remove_cap( $cap ); 关于“编辑插件”、“安装插件”、“上载插件”,但这并不能解决我的问题。我想在我的网络子网站上限制此页面:

      wp-admin/admin.php?page=all-in-one-seo-pack%2Faioseop_class.php
      wp-admin/admin.php?page=all-in-one-seo-pack%2Fmodules%2Faioseop_performance.php
      wp-admin/admin.php?page=all-in-one-seo-pack%2Fmodules%2Faioseop_sitemap.php

2 个回复
最合适的回答,由SO网友:Galgóczi Levente 整理而成

您可以使用此代码限制用户的任何页面,您只能知道url的任何部分。(该示例限制AIOSP的所有页面(因此后端上的所有url-s都与关键字相关:all-in-one seo pack或aioseop)从remove_cap( \'edit_plugins\', \'install_plugins\', \'upload_plugins\' ); 规则):

 add_action( \'current_screen\', \'restrict_screen\' );
 function restrict_screen() {
      if ( is_admin() ) {
      if (is_super_admin()) 
      return;
      $current_screen = "https://".$_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\'];
      $find_restrict = \'all-in-one-seo-pack\';
      $find_restrict2 = \'aioseop\';
      $match = strpos( $current_screen, $find_restrict );
      $match2 = strpos( $current_screen, $find_restrict2 );
               if( $match == TRUE || $match2 == TRUE ) {
                //  wp_die(\'get out\');
                $current_admin = get_admin_url() . \'index.php\';
                header(\'Location: \' . $current_admin . \'\', true, 301);
                }
      }   
 }
如果要将此代码用于另一个url,请将$find\\u restrict、$find\\u restrict2重写为url的部分键,或在代码中添加新的“find\\u restrict”。此代码将用户重定向到其当前站点的后端索引。(或者您可以使用wp_die(\'get out\');)

SO网友:David Sword

要从管理菜单中删除,可以使用remove_menu_page():

add_action( \'admin_menu\', function ( ) {
    if (is_super_admin()) 
      return;
    remove_menu_page();
    // or remove_submenu_page( ...
},99);
如果由于某种原因该页面仍然存在,只是缺少菜单链接,您可以检查get_current_screen() 要查看是否正在查看页面并阻止访问,请执行以下操作:

add_action( \'admin_notices\', function ( ) {
    if (is_super_admin()) 
      return;
    $screen = get_current_screen();
    if ($screen->parent_base == \'all-in-one-seo-pack\') { // or wtv
        wp_die(\'get out\');
    }
},99);

结束

相关推荐

如果用户不是超级管理员,如何限制管理页面? - 小码农CODE - 行之有效找到问题解决它

如果用户不是超级管理员,如何限制管理页面?

时间:2018-03-17 作者:Galgóczi Levente

我在我的多站点上使用了All-In-One Seo包,但是这个插件有管理页面,什么不属于限制用户访问插件页面的规则范围,所以我使用remove_cap( $cap ); 关于“编辑插件”、“安装插件”、“上载插件”,但这并不能解决我的问题。我想在我的网络子网站上限制此页面:

      wp-admin/admin.php?page=all-in-one-seo-pack%2Faioseop_class.php
      wp-admin/admin.php?page=all-in-one-seo-pack%2Fmodules%2Faioseop_performance.php
      wp-admin/admin.php?page=all-in-one-seo-pack%2Fmodules%2Faioseop_sitemap.php

2 个回复
最合适的回答,由SO网友:Galgóczi Levente 整理而成

您可以使用此代码限制用户的任何页面,您只能知道url的任何部分。(该示例限制AIOSP的所有页面(因此后端上的所有url-s都与关键字相关:all-in-one seo pack或aioseop)从remove_cap( \'edit_plugins\', \'install_plugins\', \'upload_plugins\' ); 规则):

 add_action( \'current_screen\', \'restrict_screen\' );
 function restrict_screen() {
      if ( is_admin() ) {
      if (is_super_admin()) 
      return;
      $current_screen = "https://".$_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\'];
      $find_restrict = \'all-in-one-seo-pack\';
      $find_restrict2 = \'aioseop\';
      $match = strpos( $current_screen, $find_restrict );
      $match2 = strpos( $current_screen, $find_restrict2 );
               if( $match == TRUE || $match2 == TRUE ) {
                //  wp_die(\'get out\');
                $current_admin = get_admin_url() . \'index.php\';
                header(\'Location: \' . $current_admin . \'\', true, 301);
                }
      }   
 }
如果要将此代码用于另一个url,请将$find\\u restrict、$find\\u restrict2重写为url的部分键,或在代码中添加新的“find\\u restrict”。此代码将用户重定向到其当前站点的后端索引。(或者您可以使用wp_die(\'get out\');)

SO网友:David Sword

要从管理菜单中删除,可以使用remove_menu_page():

add_action( \'admin_menu\', function ( ) {
    if (is_super_admin()) 
      return;
    remove_menu_page();
    // or remove_submenu_page( ...
},99);
如果由于某种原因该页面仍然存在,只是缺少菜单链接,您可以检查get_current_screen() 要查看是否正在查看页面并阻止访问,请执行以下操作:

add_action( \'admin_notices\', function ( ) {
    if (is_super_admin()) 
      return;
    $screen = get_current_screen();
    if ($screen->parent_base == \'all-in-one-seo-pack\') { // or wtv
        wp_die(\'get out\');
    }
},99);

相关推荐