Я пытаюсь скрыть страницу справки от редакторов, добавленных плагином форм тяжести . Я считаю, что раньше сталкивался с тем же вопросом с другими плагинами, поэтому я хотел бы знать, как правильно это сделать для сторонних плагинов. Это то, что у меня до сих пор не работает. Конечно, он работает для других меню 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 ) ;
Надеюсь это поможет.