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.phpparece ser after_setup_themee 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_pageno admin_menugancho / 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 gotoporque 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_themegancho em nossa redirect_from_admin_menu()função. Temos o teste para verificar se a página atual é themes.phpe para garantir que um parâmetro de URL gotoseja passado na URL. Em seguida, ele testa o valor do gotouso de uma instrução switch/ casepara 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/ caseno after_setup_themegancho / redirect_from_admin_menu()função para que fosse mais fácil adicionar gotoredirecionamentos 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) ..