Intereting Posts
Замена Open Source для WPML? theme customizer – может ли одна опция передать несколько значений? Как я могу сделать демо-версию моего Premium-плагина? Существуют ли риски безопасности? Как игнорировать или отключать тег следующей страницы? Можно ли определить две базы данных для одной установки? Доступ к настраиваемым параметрам URL WordPress & TinyMCE: не удалось загрузить Отображение сообщений WordPress из почтового и пользовательского типа сообщений в пользовательской таксономии Получать сообщения, связанные с пользовательской таксономией, альтернативно Как всегда переписывать URL страницы архивного архива, даже если у автора нет сообщения Сортировка и разбивка пользовательских почтовых таксономий по алфавиту Экран обратного вызова конечной точки для пользовательского плагина Показывать пользовательскую таксономию не в подменю Сделать изображение пользовательского миниатюры в функции media_sideload_image WP Debug установлен в true, но все же wsod

Как удалить / скрыть элементы из меню администратора?

Я хотел бы скрыть страницы и комментарии от редактора.

Я попытался переопределить их с помощью menu_position пользовательских типов, но он больше не работает в WordPress 3.7.1 .

Я нашел другой способ: удалить записи из меню администратора , изменив глобальную переменную $ menu на фильтр menu_order . К сожалению, он вызывает ошибки в menu.php : array_flip () получает значение null .

Я предполагаю, что WordPress предполагает, что значения по умолчанию все еще существуют.

Есть ли способ фильтрации записей в меню, когда они отображаются ? Еще лучше: есть ли способ публиковать общедоступный параметр post 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]); } } } } } 

Если вы просто хотите скрыть пункты меню, вы можете сделать это, как показано ниже. Не забывайте про записи внутри панели администратора.

Код:

 //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'); } 

Но вы должны иметь в виду, что это не отключает / не ограничивает функциональность . Страницы редактирования и страница комментариев могут быть достигнуты, набрав адрес в строке местоположения. Если вы хотите ограничить доступ по типу пользователя, вам нужно идти с Ролями и возможностями .


Обновить:

Что касается вашего второго вопроса, о том, как изменить встроенные свойства типов post. Вы можете достичь этого, перейдя на него, как показано ниже. Вы можете использовать registered_post_type или init hook и можете либо использовать get_post_type_object() либо глобальные $wp_post_types .

Код:

 add_action('init','wpse121406_alter_post_type_object'); function wpse121406_alter_post_type_object() { $object = get_post_type_object('page'); $object->public = false; }