it-swarm-pt.tech

Tela de configuração do administrador sem menu

Eu quero criar uma subconfiguração de alguma página no painel de administração, por exemplo:

Eu configurei o menu de configuração desta maneira:

add_menu_page( 'E+', 'CRE+', 8, 'cr_e_plus_user_config', 'cr_e_plus_user_config');
add_submenu_page( 'cr_e_plus_user_config', 'E+', 'Configurations', 8, 'cr_e_plus_user_config', 'cr_e_plus_user_config');

Na página Configurations, preciso carregar outra página quando clico em determinado link. Agora, não quero que esta nova página seja listada no menu, porque ela precisará de um determinado parâmetro antes de poder mostrá-la.

5
ariefbayu

As páginas administrativas são basicamente nada mais do que um gancho para uma função, portanto, tecnicamente, não é um problema adicionar suas próprias páginas sem usar o menu.

Eu não estava ciente de uma função de API que permite registrar as próprias páginas com facilidade, mas há uma função auxiliar no Wordpress você pode fazer uso de: get_plugin_page_hookname() (função não documentada). Além disso, o gancho precisa ser registrado em um registro global de todos os ganchos de página ($GLOBALS['_registered_pages']) para que seja classificado como válido quando a página é solicitada.

Eu coloquei isso em algum código de exemplo, apenas salve-o em sua pasta /wp-content/mu-plugins: admin_page_demo.php (Exemplo de Plugin MU do Wordpress)

Lá você pode encontrar uma função register_admin_page() que pode registrar qualquer retorno de chamada que você precisa para o gancho admin_menu. Esse é o mais importante, compare com Adicionando Menus de Administração (Wordpress Codex) .

A função retorna o URL da nova página de administração. Você escreveu que talvez seja necessário adicionar mais parâmetros, por isso achei que poderia ser útil.

Para a página de demonstração que codifiquei nesse exemplo, a URL é: /wp-admin/options-general.php?page=adminpagedemo_demo_page.

Tenha em mente que você precisa verificar a segurança dessa página por conta própria, porque o Wordpress não. Algo como

current_user_can( ... );
wp_die( __('You do not have sufficient permissions to access this page.') );

pode ser uma dica adicional útil.

5
hakre