仅向特定用户级别显示类别,不带插件

时间:2013-09-09 作者:OneEightLeft

我正在为一些军人建立一个分享照片的网站,有一件事一直困扰着我。

他们有一些照片,他们希望每个注册网站的人都能看到,还有一些照片他们可以看到。但他们不能是管理员。

我能找到的唯一帮助是只允许某些用户级别发布到某个类别。我想基本上限制“订阅者”查看一些帖子。

不要求任何人为我写点什么,但在正确的方向上提出一点就太棒了。

2 个回复
SO网友:gmazzap

如果我知道你有一些类别,例如:“保留”,“人”,“风景”,“个人”等等。

现在,您希望订阅者可以看到“人物”、“风景”类别中的帖子,但不能看到“保留”和“个人”类别中的帖子。

这相对容易,只需pre_get_posts 如果请求的帖子包含该术语或术语存档,则禁用查看。

要禁用不同的通道,可以重定向、显示404或显示自定义模板。

下面我要说的是如何保持最后的选择。

首先创建一个模板文件,例如。not-allowed.php 并放入主题文件夹。

然后在functions.php 使用此代码:

add_filter(\'template_include\', \'restict_by_category\');

function check_user() {
  $user = wp_get_current_user();
  if ( ! $user->ID || in_array(\'subscriber\', $user->roles) ) {
    // user is not logged or is a subscriber
    return false;
  }
  return true;
}

function restict_by_category( $template ) {
  if ( ! is_main_query() ) return $template; // only affect main query.
  $allow = true;
  $private_categories = array(\'reserved\', \'personal\'); // categories subscribers cannot see
  if ( is_single() ) {
    $cats = wp_get_object_terms( get_queried_object()->ID, \'category\', array(\'fields\' => \'slugs\') ); // get the categories associated to the required post
    if ( array_intersect( $private_categories, $cats ) ) {
      // post has a reserved category, let\'s check user
      $allow = check_user();
    }
  } elseif ( is_tax(\'category\', $private_categories) ) {
    // the archive for one of private categories is required, let\'s check user
    $allow = check_user();
  }
  // if allowed include the required template, otherwise include the \'not-allowed\' one
  return $allow ? $template : get_template_directory() . \'/not-allowed.php\';
}

SO网友:Nikolay

下载并安装插件Restrict Categories.限制特定角色的特定类别,并将照片张贴在适当的类别中。

结束

相关推荐

Grouping categories by genre

我的wordpress视频博客有几个类别。假设该类别可以分为几个类别,例如动作、恐怖、神秘,另一个类别属于动作、恐怖、浪漫如何将类别分为不同的类型?因为在最基本的结构中,我们将帖子分类。现在我想把类别分成不同的类别然后可以通过url(例如)在流派中显示类别http://www.domain.com/genre/actions 它将列出其中的所有类别。下面是一个具有此功能的示例站点http://www.anime44.com/anime-genre/Fantasy