Olá @Tom ,
Se entendi sua pergunta corretamente, você não precisa saber como adicionar um link ao menu (parece que você já sabe disso), mas precisa aprender como fazer com que seu link seja redirecionado corretamente, certo?
Redirecionando para um URL externo a partir de um item de menu Admin
Nesse caso, o que você precisa fazer é não usar a função do item de menu, mas, em vez disso, "ligar" o WordPress o suficiente para que ele não produza nada, exceto possivelmente os cabeçalhos HTTP. O gancho mais antigo ao ligar /wp-admin/themes.php
parece ser after_setup_theme
e parece funcionar bem.
Use um "Menu Slug" para que você possa testá-lo em um gancho
Mas, para que funcione, primeiro precisamos modificar sua chamada add_theme_page
no admin_menu
gancho / sua create_theme_style_page()
função. Abandonamos o quinto parâmetro (a função a ser chamada para implementar a opção admin) porque não precisamos dele e alteramos o quarto parâmetro (o "menu slug" ) themes.php?goto=build-styleguide-page
.
Embora pudéssemos escolher quase literalmente qualquer coisa para o quarto parâmetro, dado que vamos redirecionar, eu direcionei para a mesma página ( themes.php
) como outras opções de aparência para obter consistência. Eu também inventei arbitrariamente o nome goto
porque o WordPress não o usa e parece fazer sentido para isso.
add_action('admin_menu', 'create_theme_style_page');
function create_theme_style_page() {
add_theme_page(
'Theme Styleguide',
'Theme Styleguide',
'administrator',
'themes.php?goto=build-styleguide-page'
);
}
BTW, nos livramos da sua build_styleguide_page()
função porque não precisamos dela para esta solução.
Redirecionar no gancho mais antigo para themes.php
:after_setup_theme
Como nosso último pedaço de código, implementamos nosso after_setup_theme
gancho em nossa redirect_from_admin_menu()
função. Temos o teste para verificar se a página atual é themes.php
e para garantir que um parâmetro de URL goto
seja passado na URL. Em seguida, ele testa o valor do goto
uso de uma instrução switch
/ case
para verificar se ele possui um valor de 'build-styleguide-page'
; nesse caso, ele será redirecionado para o hipotético declarado, por exemplo, o Google, caso contrário, apenas o redirecionaremos para o painel do administrador:
add_action('after_setup_theme', 'redirect_from_admin_menu');
function redirect_from_admin_menu($value) {
global $pagenow;
if ($pagenow=='themes.php' && !empty($_GET['goto'])) {
switch ($_GET['goto']) {
case 'build-styleguide-page':
wp_redirect("http://www.google.com");
break;
default:
wp_safe_redirect('/wp-admin/');
break;
}
exit;
}
}
Notas:
Eu escolhi usar a instrução switch
/ case
no after_setup_theme
gancho / redirect_from_admin_menu()
função para que fosse mais fácil adicionar goto
redirecionamentos adicionais, se necessário; basta adicionar mais instruções de caso.
as funções wp_redirect()
e wp_safe_redirect()
na verdade não terminam; você precisa emitir explicitamente uma declaração de saída para que o WordPress pare e não substitua seu redirecionamento.
Espero que isto ajude!
'-5'
e não-5
, então a chave é considerada inválida (eu acho) .. (cordas negativas funciona, porém, se não estou enganado) ..array_push()
acrescentar os itens do menu para evitar colisões com outros plugins.global $submenu; $key = end(array_keys($submenu['tools.php'])) + 1; $submenu['tools.php'][$key++] =
etc.Eu consegui o mesmo com isso:
O que você faz aqui é adicionar um item de menu e definir slug, depois em 'admin_init' você verifica se existe slug e redireciona para o local desejado.
fonte