我想躲起来Pages 和Comments 来自编辑器。
我试图用我的自定义类型“menu\\u position”覆盖它们,但在WordPress 3.7.1 再也没有了。
我找到了另一种方法:从admin menu 通过更改菜单顺序上的全局变量filter. 不幸的是,它在菜单中产生错误。php:array\\u flip()传递一个null。
我猜WordPress假设默认值仍然存在。
有什么方法可以过滤菜单条目吗when 他们是rendered?更好的是:有没有办法设置default post 键入公共选项false?
class RemoveAdminMenuItems {
/**
* List of values used for key identification
*
* @var array
*/
public $remove_keys = array();
/**
* List of values used for key identification. Identified keys will be removed.
*
* @param array $remove_keys
*/
public function __construct($remove_keys)
{
$this->remove_keys = $remove_keys;
add_filter( \'custom_menu_order\', \'__return_true\' );
add_filter( \'menu_order\', array($this, \'reconstruct_menu\'));
}
/**
* Method modifies the admin menu before it gets rendered.
*
* @global array $menu
*/
public function reconstruct_menu() {
global $menu;
foreach ($menu as $menu_key => $menu_value) {
foreach ($this->remove_keys as $remove_key) {
$key = array_search($remove_key, $menu_value);
if ($key) {
unset($menu[$menu_key]);
}
}
}
}
}
最合适的回答,由SO网友:Nicolai Grossherr 整理而成
如果您只想隐藏菜单项,可以按如下所示进行操作。不要忘记管理栏中的条目。
Code:
//hide in admin menu
add_action( \'admin_menu\', \'wpse121406_hide_pages_comments_m\' );
function wpse121406_hide_pages_comments_m() {
remove_menu_page(\'edit.php?post_type=page\');
remove_menu_page( \'edit-comments.php\' );
}
//hide in admin bar
add_action( \'wp_before_admin_bar_render\', \'wpse121406_hide_pages_comments_b\' );
function wpse121406_hide_pages_comments_b() {
global $wp_admin_bar;
$wp_admin_bar->remove_menu(\'new-page\');
$wp_admin_bar->remove_menu(\'comments\');
}
But 您必须记住,这不会禁用/限制功能。通过在位置栏中键入地址,仍然可以访问编辑页面和评论页面。如果要按用户类型限制访问,则必须使用
Roles and Capabilities.
<小时>
Update:
关于第二个问题,关于如何更改内置的post类型属性。您可以通过如下所示的方式实现这一点。您可以使用
registered_post_type
或者
init
挂钩,可以使用
get_post_type_object()
或全球
$wp_post_types
.
Code:
add_action(\'init\',\'wpse121406_alter_post_type_object\');
function wpse121406_alter_post_type_object() {
$object = get_post_type_object(\'page\');
$object->public = false;
}