Hola @Tom ,
Si entiendo su pregunta correctamente, no necesita saber cómo agregar un enlace al menú (parece que ya lo sabe), sino que necesita aprender cómo hacer que su enlace redirija correctamente, ¿verdad?
Redireccionamiento a una URL externa desde un elemento del menú de administración
Si es así, lo que debe hacer es no usar la función del elemento del menú, sino "enganchar" WordPress con la suficiente antelación para que no genere nada, excepto posiblemente los encabezados HTTP. El primer enlace cuando se llama a /wp-admin/themes.php
parece ser after_setup_theme
y parece funcionar bien.
Usa una "Barra de menú" para que puedas probarla en un gancho
Pero para que funcione, primero debemos modificar su llamada a add_theme_page
en la función admin_menu
hook / your create_theme_style_page()
. Eliminamos el quinto parámetro (la función a la que llamar para implementar la opción de administrador) porque no lo necesitamos, y cambiamos el cuarto parámetro (la "barra de menú" ) para que sea themes.php?goto=build-styleguide-page
.
Aunque podríamos haber elegido casi literalmente cualquier cosa para el cuarto parámetro, dado que vamos a redirigir el enrutamiento a la misma página ( themes.php
) como otras opciones de apariencia para mantener la coherencia. También se me ocurrió arbitrariamente el nombre goto
porque WordPress no lo usa y parece que tiene sentido para esto.
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'
);
}
Por cierto, nos deshicimos de la función build_styleguide_page()
porque no la necesitamos para esta solución.
Redirecciona en el primer enlace para themes.php
: after_setup_theme
Como nuestro último bit de código implementamos nuestro gancho after_setup_theme
en nuestra función redirect_from_admin_menu()
. Lo tenemos probado para ver si la página actual es themes.php
y para asegurar que se haya pasado un parámetro de URL de goto
en la URL. Luego prueba el valor de goto
usando una declaración switch
/ case
para ver si tiene un valor de 'build-styleguide-page'
; si es así, se redirige a su hipotética declarada, p. ej. De lo contrario, Google simplemente nos redirecciona al panel de administración:
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 :
-
Elegí usar la instrucción switch
/ case
en la función after_setup_theme
hook / redirect_from_admin_menu()
para que sea más fácil agregar redirecciones adicionales de goto
si es necesario; sólo tiene que añadir más declaraciones de casos.
-
las funciones wp_redirect()
y wp_safe_redirect()
no terminan realmente; debe emitir explícitamente una declaración de salida para que WordPress se detenga y no anule su redirección.
Espero que esto ayude!