Oi @Tom ,
Se eu 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 redirecionar seu link corretamente, certo?
Redirecionando para um URL externo de um item de menu do administrador
Em caso afirmativo, o que você precisa fazer é não usar a função de item de menu, mas sim "ligar" o WordPress com antecedência suficiente para que não exporte nada, exceto possivelmente os cabeçalhos HTTP. O gancho mais antigo ao chamar /wp-admin/themes.php
parece ser after_setup_theme
e parece funcionar bem.
Use um "Menu Slug" para testar em um gancho
Mas, para que funcione, primeiro precisamos modificar sua chamada para add_theme_page
na função admin_menu
hook / your create_theme_style_page()
. Descartamos 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" ) para themes.php?goto=build-styleguide-page
.
Embora pudéssemos ter escolhido quase literalmente qualquer coisa para o quarto parâmetro, dado que vamos redirecionar eu roteei para a mesma página ( themes.php
) como outras opções de aparência para consistência. Eu também apenas arbitrariamente inventei 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 função build_styleguide_page()
porque não precisamos dela para essa solução.
Redirecionamento no primeiro gancho de themes.php
: after_setup_theme
Como nosso último código, implementamos nosso after_setup_theme
hook em nossa função redirect_from_admin_menu()
. Temos que testar para ver se a página atual é themes.php
e para garantir que um parâmetro de URL de goto
foi passado na URL. Em seguida, ele testa o valor de goto
usando uma instrução switch
/ case
para ver se ele tem um valor de 'build-styleguide-page'
; se assim for, ele redireciona para o seu hipotético declarado, e. Google, caso contrário, apenas redirecionamos 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
na funçãoafter_setup_theme
hook /redirect_from_admin_menu()
para que seja mais fácil adicionar redirecionamentosgoto
adicionais se você precisar; basta adicionar mais instruções de caso. -
as funções
wp_redirect()
ewp_safe_redirect()
não terminam; você precisa explícito emitir uma declaração de saída para obter WordPress para parar e não substituir seu redirecionamento.
Espero que isso ajude!