Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用户功能仅限于访问wordpress中的特定页面_Php_Wordpress - Fatal编程技术网

Php 用户功能仅限于访问wordpress中的特定页面

Php 用户功能仅限于访问wordpress中的特定页面,php,wordpress,Php,Wordpress,我想在wordpress中创建一个用户,该用户只能访问wordpress中的几个页面,其他什么都不能访问,该用户可以编辑、删除、更新和crreate任何内容,或者剪切他只能访问wordpress中任何其他内容的页面,因为我尝试了许多插件,如: 用户访问管理器 印刷许可证芯 角色作用域 但是它们不符合我的需要,或者可能是我没有很好地使用它们。在此方面的任何帮助都将不胜感激。我还尝试从后端通过代码创建用户,但无法正确完成。请尽早提供相关帮助: 我通过以下方式创建了角色: $result = add_

我想在wordpress中创建一个用户,该用户只能访问wordpress中的几个页面,其他什么都不能访问,该用户可以编辑、删除、更新和crreate任何内容,或者剪切他只能访问wordpress中任何其他内容的页面,因为我尝试了许多插件,如: 用户访问管理器 印刷许可证芯 角色作用域 但是它们不符合我的需要,或者可能是我没有很好地使用它们。在此方面的任何帮助都将不胜感激。我还尝试从后端通过代码创建用户,但无法正确完成。请尽早提供相关帮助: 我通过以下方式创建了角色:

$result = add_role(
    'basic_contributor',
    __( 'Basic Contributor' ),
    array(
        'read'         => true,  // true allows this capability
        'edit_posts'   => true,
        'delete_posts' => false, // Use false to explicitly deny
    )
);
if ( null !== $result ) {
    echo 'Yay! New role created!';
}
else {
    echo 'Oh... the basic_contributor role already exists.';
}

function add_roles_on_plugin_activation() {
       add_role( 'custom_role', 'Custom Subscriber', array( 'read' => true, 'level_0' => true ) );
   }
   register_activation_hook( __FILE__, 'add_roles_on_plugin_activation' );

但这对我没有多大帮助。

我刚刚安装并试用了这个插件:。它应该对你有用。然而,如果你需要先进的东西,你可能需要支付一些费用

在该插件中,转到设置(AAM),然后在用户角色区域中,按下要编辑的角色旁边的齿轮。然后导航到右侧的帖子或页面,再次按gear图标并设置所需的权限

如果您对自定义代码感兴趣,如果您不想使用插件,我可以提供一些方法来实现这一点——请告诉我,我可以详细说明如何实现

编辑:这里有一些代码可以放在page.php或single.php上

在循环内部,仅针对管理员,执行以下操作:

<?php 
   // First, specify only to check for permissions on certain pages/posts by ID
   if(is_page(1,2,3)||is_post(4,5,2)) {
      if(current_user_can( 'manage_options' )) { ?>
        <!-- Here, all the the_title(), the_content(), etc should go -->
        <h1><?php the_title(); ?></h1>
<?php } else { 
        echo 'Sorry, you don't have permission to view this page.'
      } 
   } else { ?>
  <!-- Display everything as normal -->
      <h1><?php the_title(); ?></h1>
<?php } ?>


正如您在评论中所说的,您希望特定的帖子被禁用或限制由您指定的特定用户访问

这与用户功能无关,因为用户功能要么让用户在wp admin中看到菜单,要么不让用户看到菜单

要隐藏默认post类型的某些记录,可以使用以下方法:

  • 创建一个ACF多选框,其中包含用户列表(要 您要隐藏或提供访问权限的)
  • 选择要通过访问这些页面阻止的用户
  • 现在保存这篇文章还将用户ID列表保存为该页面的元数据
  • 现在,通过钩子,您可以检查当前登录的用户 ID是一样的,如果他来到那个页面,你可以通过一个台面
  • 如下图所示:
  • 这需要粘贴到functions.php页面中

    机场核心设施

  • 您可以从这里下载ACF插件
  • 安装后,您将在wp admin中找到一个选项作为“自定义字段”
  • 单击该下的添加新内容,创建ACF组,并为其提供一个标题作为用户检查
  • 单击蓝色的添加字段按钮,然后提供字段标签、字段名称、在字段类型中选择用户、传递说明、查看图像以了解更多选项
  • 现在,若在字段类型中选择了用户,那个么在检查时获取该字段时,您将获得一个用户对象列表
  • 在下面的“位置”选项卡中,选择要显示此字段的帖子类型,我选择了2:“帖子”和“页面”,您可以通过单击“添加规则组”并添加更多帖子类型来选择更多内容。(附屏幕截图)

  • 您想让用户在默认帖子类型或自定义帖子类型中限制某些页面和帖子吗?我想在默认帖子类型中限制它。页面和帖子已经创建。我只想让用户只访问我希望他访问和修改的页面和帖子。谢谢您的帮助,但我已经尝试过这个插件,但是功能,我需要的,我必须购买扩展我不能实现我的要求与此插件,是的,请如果你有任何解决方案以外的插件,然后请解释我会很感激。添加了一些代码-看看。它应该放在page.php或post.php中,在循环中,如果用户拥有正确的权限,那么向他们显示post,如果没有,那么就不显示。您可以通过添加特定的ID来进行进一步的自定义,而不是在所有页面上进行检查。(
    是第页()
    部分)。使用
    is\u post()
    检查帖子。但此函数当前用户可以()只是检查用户是否有权限访问某个帖子或页面,而不是为用户分配功能?我想让用户能够完成我想让他做的某些事情,我不必检查用户是否有能力。你必须编写一个像我链接的插件一样的插件那么在上面。它允许用户访问/不访问您最初要求的特定帖子。请告诉我应该在哪里创建此ACF多选框?
    function id_WPSE_114111() {
    
        global $my_admin_page;
        $screen = get_current_screen();
        global $post;
        $id = $post->ID;
    
        $user_id = get_current_user_id();
    
        $blocked_users = get_field('blocked_users',$id);
        //try to print $blocked_users here and get only the IDs of users in an array like below
        foreach ($blocked_users as $b_key=>$b_val){
        //check how to get ID by printing the $blocked_users above
        $blocked_users[] = $b_val->ID;
        }
    
        //assuming that blocked users is an array of IDs
        /*
        $blocked_users = array(1,2,3,4);
        */
    
        //then
        if(in_array($user_id,$blocked_users)){
            echo 'Not accessible !!'
            return;
        }
    
    }
    
    add_action( 'admin_notices', 'id_WPSE_114111' );