限制wordpress用户访问管理区域中的某些帖子类别

时间:2016-05-07 14:56:22

标签: php wordpress wordpress-theming

我希望限制用户在Wordpress后端中的访问权限,方式是该用户只对一个类别的帖子进行(读,写)访问。用户甚至不能阅读后端其他类别的帖子。

我如何实现这一点(理想情况下,通过向functions.php添加一些代码) - 并且没有任何性能影响(例如页面加载)?

我基本上试图在它过时之前实现这个插件的功能: https://wordpress.org/plugins/restrict-categories/

“限制类别是一个插件,允许您选择用户可以在帖子编辑屏幕中查看,添加和编辑的类别。 此插件允许您根据用户角色和用户名限制访问。“

2 个答案:

答案 0 :(得分:1)

如果您不介意使用最新的插件,那么这个插件将执行您要求的所有内容并定期更新,并且有超过40,000个有效安装。

用户访问管理器

https://github.com/JuanitoFatas/active_error

答案 1 :(得分:0)

2020年更新,有效的答案,我去了不同的答案,现在它们都无法在新的WordPress中使用。

function hide_categories_for_specific_user( $exclusions, $args ){

if ( ((defined( 'REST_REQUEST' ) && REST_REQUEST) or $GLOBALS['pagenow'] === 'edit.php' ) && !current_user_can( 'manage_options' ) ) {

   // IDs of terms to be excluded
   $exclude_array = array("12","16","17"); // CHANGE THIS TO IDs OF YOUR TERMS


   // Generation of exclusion SQL code
   $exterms = wp_parse_id_list( $exclude_array );
   foreach ( $exterms as $exterm ) {
           if ( empty($exclusions) )
               $exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
       else
               $exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
   }

   // Closing bracket
   if ( !empty($exclusions) )
   $exclusions .= ')';

   // Return our SQL statement

  }
   return $exclusions;
}

 // Finally hook up our filter
 add_filter( 'list_terms_exclusions', 'hide_categories_for_specific_user', 10, 2 );

Hide Some Categories in Post Editor

那里获得最终帮助