Удаляем пункты меню из консоли WordPress

Кодекс WP предлагает различные интересные советы, с которыми вы можете экспериментировать на практике. Была ли у вас когда-нибудь необходимость удалить определенную страницу меню из консоли? Возможно, вы разрабатываете сайт для своего клиента, который может запутаться в меню настроек. Сдуйте пыль с кодекса и проверьте описания функций, позволяющих удалить страницы меню.

Вот то, что вы ищете:

<?php remove_menu_page( $menu_slug ) ?>

Замените слаг меню названием php-скрипта для пункта меню, который вы желаете удалить.

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

Также давайте удалим меню настроек. Вот как это выглядит до и после:

menu

Быстрый и грязный способ сделать это состоит в добавлении кода напрямую в файл functions.php, но мы пойдем другим путем, создав функциональный плагин. Не переживайте, это очень просто. Просто откройте свой чистый текстовый файл и добавьте к нему немного информации относительно вашего плагина, после чего внесите в него код:

<?php
/*
Plugin Name: Remove Settings and Posts Menu
Description: Just don't want my settings menu anymore and I don't want to write any posts - what's the big deal?

Version: 0.1

License: GPL
Author: Sarah Gooding
Author URI: http://untame.net
*/

	add_action( 'admin_menu', 'my_remove_menu_pages' );

	function my_remove_menu_pages() {
		remove_menu_page('options-general.php');
		remove_menu_page('edit.php');			
	}
?>

Сохраним файл как remove-menu.php (или как вам больше нравится). Затем загружаем этот файл в папку wp-content/plugins.

Последний шаг: не забудьте активировать ваш небольшой плагин. Вы найдете его среди ваших неактивных плагинов:

activate-plugin

Это было просто, не правда ли? Учтите, что этот код только удаляет пункт меню, но не препятствует получению доступа пользователям к данной странице, если они знают, где она расположена. Для строго ограничения доступа необходимо использовать более мощные настройки, основанные на пользовательских ролях и возможностях.

Прежде, чем переходить к хранилищу плагинов WordPress, обязательно изучите кодекс, который способен подарить вам много приятных минут. Вы можете отыскать именно то, что вам требовалось, и преобразовать это в свой собственный быстрый плагин.

Источник: wpmu.org

Блог про WordPress
Комментарии: 7
  1. Иван

    Прикольно, почти то что искал, а подскажите немного не понял, мне нужно сделать так что бы Редактор видел плагины только те которые я ему указал, а все только админ, это возможно? И если да то как примерно…?
    Спасибо!

  2. Дмитрий (автор)

    Попробуйте вот этот плагин: http://wordpress.org/extend/plugins/nav-menu-roles/. Возможно, что скрыть определенные плагины не получится, но можно ограничить вообще доступ к разделу плагинов.

  3. Shtirlitz

    А как убрать страничку из меню на сайте? Предлагают ставить плагины, например, Exclude Pages.

    1. Дмитрий (автор)
  4. Arni

    Подскажите, что надо добавить в ваш код, чтобы данные изменения в меню затрагивали всех пользователей кроме администратора? Я попробовал добавить в свое время такую конструкцию (см. ниже), которую сделал по аналогии с кодом, вставляемым в functions.php, но получил ошибку:
    Call to undefined function wp_get_current_user() in /var/www/domain/domain.ru/docs/wp-includes/capabilities.php on line 1353

    if (!current_user_can(‘administrator’)):
    add_action( ‘admin_menu’, ‘my_remove_menu_pages’ );
    endif;

    Заранее спасибо!

  5. Дмитрий (автор)

    Похоже, что такого параметра как «administrator», нет в списке доступных для этой функции.

    Вот здесь посмотрите список доступных значений для переменной $capabilities (раздел Capabilities Parameters):

    http://codex.wordpress.org/Function_Reference/current_user_can

  6. arniarni

    Спасибо. Похоже, надо вставлять не роль, а возможность, хотя подобная конструкция работала в functions.php, а при переносе в отдельный плагин, видимо, надо что-то менять. Попробую разобраться. Не хотелось бы, чтобы у админа тоже отсутствовали нужные ему пункты меню.

Добавить комментарий для Дмитрий Алёшин Отменить ответ

Получать новые комментарии по электронной почте.