【问题标题】:Hide Wordpress Categories from Users by Role按角色向用户隐藏 Wordpress 类别
【发布时间】:2019-12-30 13:30:09
【问题描述】:

我希望能够根据用户的角色隐藏某些 Wordpress 帖子类别。

我在这里尝试过代码: Wordpress: Hide specific categories from User Role on the Add New page 我认为它已被弃用,非常感谢一些帮助

add_filter('list_terms_exclusions', 'yoursite_list_terms_exclusions', 10, 2);

function yoursite_list_terms_exclusions($exclusions, $args) {

global $pagenow;
if (in_array($pagenow,array('post.php','post-new.php')) && !current_user_can('see_special_cats')) {
    $exclusions = " {$exclusions} AND t.slug NOT IN ('slug-one','slug-two')";
}
return $exclusions;

}

使用此代码不会发生任何事情。我已经尝试了 10 多个不同的插件,我真的很绝望。提前致谢。

【问题讨论】:

  • 你是否使用过任何插件来创建用户角色?
  • 使用插件Members创建用户角色。几乎可以使用此代码 - 但不包括角色 'cmdr' 而不是 8/9 中的所有内容。 !current_user_can 已弃用,有一个 args 应该有一个排除项。 add_filter('list_terms_exclusions', 'yoursite_list_terms_exclusions', 8, 9);功能 yoursite_list_terms_exclusions( $exclusions, $args ) { 全球 $pagenow; $user = wp_get_current_user(); if ( !in_array( 'cmdr', (array) $user->roles ) ) { //用户拥有“cmdr”角色 $args = $exclusions; } 返回 $args; }
  • 你能告诉我你用的是哪个插件吗?

标签: wordpress categories


【解决方案1】:
add_filter('list_terms_exclusions', 'yoursite_list_terms_exclusions', 10, 2);
function yoursite_list_terms_exclusions( $exclusions, $args ) {
  global $pagenow;
  if (in_array($pagenow,array('post.php','post-new.php')) && 
     !current_user_can('see_special_cats')) {
    $exclusions = " {$exclusions} AND t.slug NOT IN ('slug-one','slug-two')";
  }
  return $exclusions;
}

此代码假定您已使用 Members plugin 之类的插件创建了一个名为“see_special_cats”的 capability,并且您已将其分配给您希望访问类别的每个角色,当然除了“贡献者”。

既然你找到了这个插件,你可能不需要这个,但也许它会帮助别人。

【讨论】:

  • Paul 这是我引用的相同代码。它不起作用,因为 !current_user_can 已弃用。即使没有它也行不通。
猜你喜欢
  • 2018-01-06
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
  • 2018-07-19
  • 2017-08-12
  • 2012-09-16
相关资源
最近更新 更多