如何为不同的页面设置不同的用户?

时间:2013-09-02 作者:rockswap

我正在设计一个网站,我希望有不同的用户(登录)不同的页面。

插图:

假设我有订阅服务器A、B、C、D、E、F和第1、2和3页。

我希望具有以下功能:

A可以访问第1、2和3页B可以访问第1、2和3页C可以访问所有页。

我尝试使用以下插件:

Capability Manager上下文页面安全成员用户访问管理器用户组页面限制(这可以限制匿名用户对某些页面的访问,并且只有登录的用户才能查看锁定的页面。)但是,即使使用了上述插件的任何组合,我也无法获得所需的功能。

需要一些帮助,我是个新手。

提前谢谢。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

在插件文件夹中创建一个子文件夹,将其命名为“MyRestict”。在此文件夹中放置以下php:

<?php 
/**
 * Plugin Name: My Restict
 * Plugin URI: http://wordpress.stackexchange.com/questions/112566/how-to-set-different-users-for-different-pages
 * Author: G.M.
 */

function my_restict_template_filter( $template ) {
  if ( is_page() ) {
    $post = get_queried_object();
    $allowed = (string) get_post_meta($post->ID, \'allowed_users\', true);
    if ( $allowed ) $allowed = array_map(\'trim\', explode(\',\', $allowed) );
    $user = wp_get_current_user();
    if ( ! empty($allowed) && ( ! is_object($user) || ! in_array($user->ID, $allowed) ) )
      return plugin_dir_path(__FILE__) . \'not-allowed.php\';
  }
  return $template;
}

add_filter(\'template_include\', \'my_restict_template_filter\');
在同一个“MyRestict”文件夹中创建一个名为not-allowed.php 上面写着:

<div>Sorry, you are not allowed to view this page.</div>
在页面中,必须使用键创建自定义字段allowed_users 您必须在其中编写逗号分隔的users ids 要允许查看该页面的用户数:enter image description here

激活后端的“我的Restict”插件

请记住,所有访问者都可以访问没有任何自定义字段的页面,即使没有登录的访问者也可以访问。

结束

相关推荐

Hooking get_pages()

在站点上,这是一个使用get_pages() 制作页面列表。该列表用于创建页面列表以及创建下一页和上一页链接。()http://wordpress.org/plugins/next-page-not-next-post/ )页面结构使用一些空页面只是为了建立层次结构。这些页面不在导航中,导航由wp_nav_menu(), 但当插件调用时,它们会被登记get_pages()因此,我想从插件发出的请求中删除这些空白页面。我的目的是为每个不必要的页面添加一个自定义字段,并使用此自定义字段来选择和删除它们。我第一