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

3

Estou tentando ocultar uma página de ajuda dos editores, adicionada pelo plug-in formulários de gravidade . Acredito que me deparei com o mesmo problema antes com outros plugins, então gostaria de saber a maneira correta de fazer isso para plugins de terceiros. Isto é o que eu tenho até agora que não funciona. É claro que funciona para outros menus do WP, então estou pensando se a função é limitada apenas aos menus do 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');
    
por Andrew 07.04.2012 / 09:40

4 respostas

3

Ok, a Resposta de Eugene funciona no caso de um plug-in que não lida com recursos personalizados.

  

enlace
  A API do Plugin do WordPress permite que Funções e Recursos sejam adicionados, removidos e alterados. Como os plug-ins podem alterar funções e recursos, apenas os padrões são abordados neste artigo.

Então, se seu código funciona sem verificar a capacidade, temos que observar como o GravityForms executa sua ação add_submenu_page .
E para isso, deixamos cair toda a pasta do plugin dentro de um bom editor de código (NotePad ++, TextMate, etc) e fazemos uma pesquisa global e encontramos 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 em frente com o plug-in Members , que, por exemplo, o GF reconhece, e temos o seguinte em sua tela de configuração para a função Editor.
MAS NOTANDO QUE gform_full_access não aparece nesta lista. Tem que ser adicionado manualmente através da interface do plugin ...

Depoisdissoemarcandoorecursodeacessocompleto,oremove_submenu_pagefuncionacomoesperadoparaafunçãoEditor.

Códigodereferênciaparatodosossubmenus(lembrandoqueoprimeiroéomenudotopo).

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

Plugindeinteresse

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

    
por brasofilo 18.07.2012 / 04:31
8

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, use o seguinte snippet:

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 );
    
por Eugene Manuilov 07.04.2012 / 09:45
1

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

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

remove_submenu_page( 'gf_edit_forms', 'gf_update' ); 
    
por user14386 30.04.2014 / 18:19
1

O plug-in GravityForms renomeia o item de menu de nível superior para corresponder ao primeiro do submenu.

Por exemplo; se você adicionou apenas o recurso gravityforms_view_entries à função Editor, o primeiro item do submenu será "Entradas", de modo que o menu pai será "gf_entries" e não "gf_edit_forms". Portanto, o código a seguir removerá o item "Ajuda" do submenu para editores com apenas esse recurso:

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

Espero que isso ajude.

    
por D-B 21.11.2014 / 10:38