【问题标题】:(WP) Hide Admin Menu & Restricted Access Based On User Role(WP) 隐藏管理员菜单和基于用户角色的受限访问
【发布时间】:2014-05-09 15:27:48
【问题描述】:

我想在该页面上为 Wordpress 隐藏管理菜单和受限访问。对于隐藏管理菜单,我已经做到了。这是示例代码:

add_action( 'admin_init', 'my_remove_menu_pages' );

function my_remove_menu_pages() {
    // If the user does not have access to publish posts
    if(!current_user_can('manage_options')) {
        remove_menu_page('tools.php');
    }
}

我正在创建新的用户角色,例如 image_uploader。如何在与我基于用户角色隐藏的管理菜单相关的页面上限制访问?目前,它只是隐藏管理菜单并且不受限制,这意味着保持链接的用户将获得该页面的访问权限。并且此代码不是特定于用户角色,而是特定于用户功能。

我想要的是根据特定用户角色隐藏和限制菜单和页面。我该怎么办?

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    你可以使用钩子load-$page,比如:

    # /wp-admin/$page.php
    $pages = array( 'profile', 'tools' );
    
    foreach( $pages as $page )
        add_action( "load-$page.php", 'block_user_so_23568456' );
    
    function block_user_so_23568456()
    {
        $user = get_userdata( get_current_user_id() );
    
        # Send this user role to the Dashboard /wp-admin/index.php
        if ( in_array( 'image_uploader', $user->roles ) ) 
        {
            wp_redirect( admin_url() );
            exit();
        }
    }
    

    【讨论】:

    • 如何阻止自定义板页面?示例:/wp-admin/admin.php?page=my-custom-dashboard
    • 嗨,Yiedpozi,是的,有可能,将'admin' 添加到$pages 数组,然后使用global $pagenow; 检测admin.php,最后使用isset( $_GET['page'] ) 来确认它是您的页面。如果你不能解决,在这里再ping我,我不在电脑上,无法测试,但这是蓝图:)
    • 解决了!非常感谢。 :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2015-11-01
    • 2019-04-30
    • 2014-01-11
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多