Intereting Posts
Создание плагина со сменными значениями типа персонализированного сообщения … необходим совет Изменить вторичный цикл для исключения сообщений из текущей категории страниц Вредоносная загрузка файла Создал цикл для пользовательского сообщения CPT UI, но новый тип сообщения не отображается на пользовательской странице Форма ввода, представляющая 2 внешних API Множество действий с данными Ajax Программно изменяющаяся информация о роли; редактирование имени роли и удаление Форма запроса, как на URL Случайные буквенно-цифровые URL-адреса Как добавить метабокс ТОЛЬКО к определенному типу продукта WooCommerce Крючки с автоматической загрузкой внутри должны использовать плагин Неустранимая ошибка: Непринятая ошибка: вызов функции undefined do_action_ref_array () при использовании функции wp_signon Как увеличить библиотеку iframe в толстой библиотеке? Выпуск новой версии плагина, как переименовать старые ключи опций? Pagination не работает должным образом для архива настраиваемого типа сообщений, указанного на первой странице

Удаление страницы администратора, добавленной сторонним плагином. Гравитационные формы в этом примере

Я пытаюсь скрыть страницу справки от редакторов, добавленных плагином форм тяжести . Я считаю, что раньше сталкивался с тем же вопросом с другими плагинами, поэтому я хотел бы знать, как правильно это сделать для сторонних плагинов. Это то, что у меня до сих пор не работает. Конечно, он работает для других меню WP, поэтому мне интересно, ограничена ли функция только WP меню?

function remove_menu_links() { if( !current_user_can('manage_options') ) { remove_menu_page('admin.php?page=gf_help'); // this is the pages url } } add_action( 'admin_menu', 'remove_menu_links'); 

Хорошо, Eugene's Answer работает в случае плагина, который не касается пользовательских возможностей.

http://codex.wordpress.org/Roles_and_Capabilities
API-интерфейс плагина WordPress позволяет добавлять, удалять и изменять роли и возможности. Поскольку плагины могут изменять роли и возможности, в этой статье рассматриваются только те, которые используются по умолчанию.


Итак, если его код работает без проверки возможности, мы должны посмотреть, как GravityForms выполняет свое действие add_submenu_page .
И для этого мы отбрасываем всю папку плагина внутри хорошего редактора кода (NotePad ++, TextMate и т. Д.) И делаем глобальный поиск и находим наш материал.

 // wp-content/plugins/gravityforms/gravityforms.php // all parameters removed from the original code, except $page_title and $capability add_submenu_page( $parent_slug, __("Help", "gravityforms"), $menu_title, $has_full_access ? "gform_full_access" : $min_cap, $menu_slug, $function ); 

И несколько строк, прежде чем мы увидим:

 $has_full_access = current_user_can("gform_full_access"); $min_cap = GFCommon::current_user_can_which(GFCommon::all_caps()); if(empty($min_cap)) $min_cap = "gform_full_access"; 

Теперь мы продвигаемся с плагинами Members , которые Btw GF распознает, и у нас есть следующее на экране конфигурации для роли редактора.
НО ОТМЕЧАЯ, что gform_full_access не отображается в этом списке. Он должен быть добавлен вручную через интерфейс плагина …

введите описание изображения здесь

После этого и разметки полной возможности доступа remove_submenu_page работает, как ожидается, роль редактора.



Код ссылки для всех подменю (запоминание первого – это самое главное меню).

 function remove_menu_links() { if( !current_user_can( 'manage_options' ) ) { // remove_submenu_page( 'gf_edit_forms', 'gf_edit_forms' ); // remove_submenu_page( 'gf_edit_forms', 'gf_new_form' ); // remove_submenu_page( 'gf_edit_forms', 'gf_new_formf_help' ); // remove_submenu_page( 'gf_edit_forms', 'gf_entries' ); // remove_submenu_page( 'gf_edit_forms', 'gf_settings' ); // remove_submenu_page( 'gf_edit_forms', 'gf_export' ); // remove_submenu_page( 'gf_edit_forms', 'gf_update' ); // remove_submenu_page( 'gf_edit_forms', 'gf_addons' ); remove_submenu_page( 'gf_edit_forms', 'gf_help' ); } } add_action( 'admin_menu', 'remove_menu_links', 9999 ); 

Интересный плагин

Администрирование делает это скрывая магию в мгновение ока и полностью ПРО.

Вам нужно добавить свой крючок в конец очереди, а затем удалить меню путём:

 function remove_menu_links() { if( !current_user_can( 'manage_options' ) ) { remove_menu_page( 'gf_edit_forms' ); // this is the pages url } } add_action( 'admin_menu', 'remove_menu_links', 9999 ); 

Если вы хотите удалить подменю, вам необходимо использовать следующий фрагмент:

 function remove_menu_links() { if( !current_user_can( 'manage_options' ) ) { remove_submenu_page( 'gf_edit_forms', 'gf_help' ); } } add_action( 'admin_menu', 'remove_menu_links', 9999 ); 

Это сводило меня с ума. Ответы, предоставленные здесь, дали мне большую часть пути, но этот особый пункт меню Gravity Forms немного странный.

Мне удалось добраться до его корня, проанализировав глобальную переменную $ submenu, которая содержит все данные меню. Следующий фрагмент должен убить элемент подменю обновления для вас, когда он подключен к admin_menu (), как указано выше 🙂

 remove_submenu_page( 'gf_edit_forms', 'gf_update' ); 

Плагин GravityForms переименовывает пункт меню верхнего уровня в соответствии с первым подменю.

Например; если вы добавили только роль gravityforms_view_entries к роли редактора, то первым элементом подменю будет «Записи», поэтому родительское меню будет «gf_entries», а не «gf_edit_forms». Таким образом, следующий код удалит элемент «Справка» из подменю для редакторов только с такой возможностью:

 function remove_menu_links() { remove_submenu_page( 'gf_entries', 'gf_help' ); } add_action( 'admin_menu', 'remove_menu_links', 9999 ) ; 

Надеюсь это поможет.