【问题标题】:Limit page creations by user role functions.php按用户角色functions.php限制页面创建
【发布时间】:2018-11-16 01:59:22
【问题描述】:

是否可以通过functions.php创建一个函数来限制用户根据他们的用户角色创建页面?例如,用户角色“受限”的用户只能创建 5 个页面。

当他们达到这个数量时,“创建新页面”按钮必须消失,否则他们会收到一条消息,说他们达到了限制,必须联系那里的管理员。

我知道有一个名为 Bainternet Posts Creation Limits 的插件,但这会导致一些问题。

函数有可能吗?

编辑:

好的,我尝试了下面的代码,但无法正常工作,老实说,我的编码技能太差了,无法实现它。

还有其他人有什么想法吗?

【问题讨论】:

    标签: php function user-roles restrictions


    【解决方案1】:

    你可以试试这样的:

    第 1 步:创建用户后:为您的用户提供“publish_pages”功能

    第 2 步:在 user_meta 中保存用户创建了多少页。

    第 3 步:如果用户有 5 个或更多页面,请移除此用户的权限。

    第 1 步和第 2 步(未经测试):

    add_action( 'user_register', 'user_registered', 10, 1 );
    
    function user_registered( $user_id ) {
    
        // ADD CAPABILITY
        $user = new WP_User( $user_id );
        if ( ! empty( $user->roles ) && is_array( $user->roles ) && in_array( 'YOURROLEHERE', $user->roles ) ) {
            $user->add_cap( 'publish_pages');
            update_user_meta($user_id, 'numberofpages', 0);
        }     
    
    }
    

    第 3 步(未经测试):

    add_action('publish_page', 'user_published_page');
    
    function user_published_page(){
        // GET CURRENT USER
        $user_id = get_current_user_id();
        $user = new WP_User( $user_id );
    
        // CHECK ROLE
        if ( ! empty( $user->roles ) && is_array( $user->roles ) && in_array( 'YOURROLEHERE', $user->roles ) ) {
           // GET NUMBER OF PAGES CREATED
           $numberofpages = intval(get_user_meta($user_id, 'numberofpages', true));
    
            if($numberofpages >= 5){
                $user->remove_cap( 'publish_pages');
            } else {
                update_user_meta($user_id, 'numberofpages', $numberofpages + 1);
            }
        }
    }
    

    【讨论】:

    • 您好鲁本,感谢您提出的解决方案。我刚刚测试了它。创建了一个新用户并将允许的页面数设置为 1,但用户仍然可以创建第二个页面...
    • 是否正在创建 user_meta?你能调试这段代码吗?
    • user_meta 已创建,但我认为它停留在 1...我现在添加了 3 页,它仍然是 1
    猜你喜欢
    • 1970-01-01
    • 2019-10-17
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多