Removendo uma página de administração adicionada por um complemento de terceiros. Formas de gravidade neste exemplo

Estou tentando esconder uma página de ajuda de editores, adicionada pelo plugin de formulários de gravidade . Eu acredito ter encontrado o mesmo problema antes com outros plugins, então eu gostaria de saber a maneira correta de fazê-lo para plugins de terceiros. Isto é o que eu tenho até agora o que não funciona. Claro que funciona para outros menus WP, então eu estou pensando se a function é limitada apenas aos menus 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'); 

Solutions Collecting From Web of "Removendo uma página de administração adicionada por um complemento de terceiros. Formas de gravidade neste exemplo"

Ok, a resposta de Eugene funciona no caso de um plugin que não lida com resources personalizados.

http://codex.wordpress.org/Roles_and_Capabilities
A API do WordPress Plugin permite que Funções e Funções sejam adicionadas, removidas e alteradas. Como os Plugins podem mudar Funções e Capacidades, apenas os itens padrão são abordados neste artigo.


Então, se o código funciona sem verificar a capacidade, temos que ver como o GravityForms executa sua ação add_submenu_page .
E para isso, deixamos toda a pasta do plugin dentro de um bom editor de código (NotePad ++, TextMate, etc.) e faça uma pesquisa global e encontre nossas coisas.

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

E algumas linhas antes de vermos:

 $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"; 

Agora, vamos adiante, o plugin dos membros , que reconhece o GF, e temos o seguinte na canvas de configuração para o papel do Editor.
MAS TOMANDO NOTA DE QUE gform_full_access não aparece nesta lista. Tem que ser adicionado manualmente através da interface do plugin …

insira a descrição da imagem aqui

Depois disso e marcando a capacidade de access total, remove_submenu_page funciona como esperado para a function do Editor.



Código de referência para todos os submenus (lembrando o primeiro é o menu superior).

 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 ); 

Plugin de interesse

Adminimize isso esconde a magia em um piscar de olhos e é completamente PRO.

Você precisa adicionar seu gancho no final da fila e, em seguida, remover o menu por slug:

 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 ); 

Se você quiser remover o submenu, você precisa usar o seguinte trecho:

 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 ); 

Isso estava me deixando louco. As respostas fornecidas aqui me deram a maior parte do caminho, mas esse item de menu especial gravado do Gravity Forms é um pouco estranho.

Consegui chegar à raiz dele ao analisar a variável global $ submenu que contém todos os dados do menu. O snippet a seguir deve matar o item do submenu de atualização para você, quando conectado em admin_menu () conforme listado acima 🙂

 remove_submenu_page( 'gf_edit_forms', 'gf_update' ); 

O plugin GravityForms muda o nome do item de menu de nível superior para coincidir com o primeiro do submenu.

Por exemplo; Se você adicionou apenas o recurso gravityforms_view_entries à function do Editor, o primeiro item do submenu será “Entradas”, então o menu pai será “gf_entries” e não “gf_edit_forms”. Então, o código a seguir removerá o item “Ajuda” do submenu para Editores com apenas essa capacidade:

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

Espero que isto ajude.