WordPress前端用户受限分类

时间:2017-11-08 作者:jaya558

嗨,我需要一些关于如何实现以下senario的信息。

我有一个帖子类型叫做"PRO"."Pro Categories".

  • 管理员将在后端创建一个名为“project”的自定义角色的用户,管理员将创建自定义分类术语,在创建时,他必须选择一个具有上述角色的用户(因此只有具有上述角色的用户列表才可供选择)
  • 在前端,当用户登录时,他必须只查看(或有权访问)其个人资料可以访问的分类法/帖子。用户没有后端访问权限。只有前端限制,这里有人能告诉我实现这一目标的最佳方法吗。

    到目前为止,我所取得的成就。

    使用用户角色编辑器创建用户角色使用ACF pro,用户关系字段,我在分类部分显示与“项目”相关的所有用户

  • 创建了两个分类法和两个用户,并对其进行了标记以检查结果。下面是检查当前用户是否有权访问标记的分类法的代码。

    $current_user = wp_get_current_user();   
                    if(in_array(\'project\',$current_user->roles)){
                        $pro_cats = get_terms(\'pro-category\',\'hide_empty=0\');
                        //print_r( $pro_cats); 
    
                        $allowed_cats = array();
                        if(is_array($pro_cats) && count($pro_cats)){
                            foreach($pro_cats as $pro_cat){
                                $auth_users = get_field(\'authorized_users\', \'pro-category_\'.$pro_cat->term_id);
                                if(is_array($auth_users) && count($auth_users)){
                                    foreach($auth_users as $auth_user){
                                        if($auth_user[\'ID\'] == $current_user->ID){
                                            $allowed_cats[] = $pro_cat;
                                        $link = get_bloginfo( \'url\' ) . \'/pro-category/\' . $pro_cat->slug . \'/\';
                                        echo \'Name - \'.$pro_cat->name.\' - link -\'.$link.\'<br />\';
                                            //print_r( $pro_cat->name);
                                            //print_r( $pro_cat->slug);
                                        }
                                    }
                                }
                            }
                        }
                    }
    
    所以从上面可以看出,当用户登录时,我可以看到他被标记在什么分类法中。

    现在,我想限制分类法归档/单篇文章。因此,当用户登录时,他必须只访问与其概要文件相关的分类法。

  • 1 个回复
    SO网友:Marcelo Henriques Cortez

    您应该在前端进行验证,以查看用户是否具有“pro 1”、“pro 2”或其他角色。

    Like:

    $user = wp_get_current_user();
    if (in_array( \'pro-1\', $user->roles)):
    //whats this user can see
    elseif (in_array( \'pro-2\', $user->roles)):
    //whats this user can see
    else :
    endif;
    

    If you are using a template, you can try adding this on the top of your code:

    global $authordata; 
    global $post;
    setup_postdata( $authordata );
    

    结束

    相关推荐

    Front-End Post Submission

    我正在尝试添加一个表单,用户可以从前端提交帖子。我正在学习本教程:http://wpshout。com/wordpress从前端提交帖子/我正在做的是添加this code 到我的一个页面模板。表单显示正常,但当我单击“提交”按钮时,它会显示“Page not found error“”许多评论者说这不起作用。谁能给我指出正确的方向吗?代码是否不完整?有缺陷吗?我做错什么了吗?谢谢Towfiq I。