admin管理员组文章数量:1336138
Recently, I am customizing the COLORMag theme in WordPress. I want to make my site as a multi-author website where random people will register and write. But as my theme's homepage shows all the posts by categories, so only I want to control which categories post to show on the homepage. To do this, I have to restrict some categories from the meta box so that only I can select which post to show in that category. I have created two custom user roles by Publishpress capabilities plugin.
Two of them are "Authors under review" and "Publisher". The authors under review cannot post directly to the homepage, but publishers can do. Now, I want to restrict some specific categories for both of them to select from the meta box while posting content. But the categories will show in my editor pannel as a super admin and the posts of that category will be visible to all. I hope I have been able to explain the problem. The problem is so urgent to be solved. And if you can give me the custom code with explanation and instruction then it will be highly appreciated as I am so new in coding. Thanks in advance.
N.B: There was a plugin in the Wordpress directories to restrict categories. But that plugin has been removed from the Wordpress due to security reason.
Recently, I am customizing the COLORMag theme in WordPress. I want to make my site as a multi-author website where random people will register and write. But as my theme's homepage shows all the posts by categories, so only I want to control which categories post to show on the homepage. To do this, I have to restrict some categories from the meta box so that only I can select which post to show in that category. I have created two custom user roles by Publishpress capabilities plugin.
Two of them are "Authors under review" and "Publisher". The authors under review cannot post directly to the homepage, but publishers can do. Now, I want to restrict some specific categories for both of them to select from the meta box while posting content. But the categories will show in my editor pannel as a super admin and the posts of that category will be visible to all. I hope I have been able to explain the problem. The problem is so urgent to be solved. And if you can give me the custom code with explanation and instruction then it will be highly appreciated as I am so new in coding. Thanks in advance.
N.B: There was a plugin in the Wordpress directories to restrict categories. But that plugin has been removed from the Wordpress due to security reason.
Share Improve this question asked Feb 3, 2020 at 23:40 Naeem MusaNaeem Musa 414 bronze badges 4- I needed the same thing and used en-au.wordpress/plugins/restrict-categories Although it hasn't been updated for a while it does seem to work with Wordpress 5.3.2 but only if you enable classic editor rather than use Block Editor. It might get you started and point you in the right direction. Normally I wouldn't encourage using old plugins, but it solved the problem for me. – Admiral Noisy Bottom Commented Feb 3, 2020 at 23:52
- Sorry to say, now it is not possible to use the classic editor. Already, I have created some posts with the new editor. If I use classic editor now, it can show invalid JSON response. I need to change the meta box problem in the new editor. Is it possible? Can you please help? And interestingly, I have already tried your suggested plugin with the new editor but it didn’t work. Thanks for your suggestion though. ❤ – Naeem Musa Commented Feb 4, 2020 at 0:00
- Would it not be easier to use a custom taxonomy and hide it's box for those user roles? Then you could even have custom archives if you wanted to with their own URLs and templates! Or, set it to private and only use it in code and WP Admin – Tom J Nowell ♦ Commented Feb 4, 2020 at 0:18
- @NaeemMusa I was unaware of the invalid json issue. All my posts were created in the block editor, and I now use the classic editor and am able to edit and display articles without issue. I'm afraid I wont be much help here and I suggest looking at Tom's comment. – Admiral Noisy Bottom Commented Feb 4, 2020 at 0:29
1 Answer
Reset to default 3After searching a lot over the web I found a solution, so I am answering my own question. I hope it might help others. you can pass in the ids of categories you want to hide as an array, and then paste this in your functions.php file. It will work in the new editor. All categories will be shown for administrators.
Don't forget to customize the values in the $exclude_array = array("5","6","7","1");
function hide_categories_for_specific_user( $exclusions, $args ){
if (!current_user_can('manage_options') ) {
// IDs of terms to be excluded
$exclude_array = array("5","6","7","1"); // 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 );
本文标签:
版权声明:本文标题:taxonomy - Want to hide some categories from the categories meta box in the post editor for the two specific user roles 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742349643a2458228.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论