Hola @ Tom ,
Si entiendo su pregunta correctamente, no necesita saber cómo agregar un enlace al menú (parece que ya lo sabe), sino que debe aprender cómo hacer que su enlace se redirija correctamente, ¿verdad?
Redirigir a una URL externa desde un elemento del menú Admin
Si es así, lo que debe hacer es no usar la función del elemento del menú, sino "enganchar" WordPress lo suficientemente temprano como para que no genere nada excepto posiblemente encabezados HTTP. El primer enganche al llamar /wp-admin/themes.php
parece ser after_setup_theme
y parece funcionar bien.
Use un "Menú Slug" para que pueda probarlo en un gancho
Pero para que funcione, primero debemos modificar su llamada add_theme_page
en el admin_menu
enlace / su create_theme_style_page()
función. Eliminamos el quinto parámetro (la función para llamar para implementar la opción de administrador) porque no lo necesitamos, y cambiamos el cuarto parámetro ( "babosa 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, enrute a la misma página ( themes.php
) que otras opciones de apariencia para mantener la coherencia. También se me ocurrió el nombre arbitrariamente goto
porque WordPress no lo usa y parece tener 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 su build_styleguide_page()
función porque no la necesitamos para esta solución.
Redireccionar en el gancho más antiguo para themes.php
:after_setup_theme
Como nuestro último fragmento de código, implementamos nuestro after_setup_theme
enlace en nuestra redirect_from_admin_menu()
función. Tenemos que probar para ver si la página actual es themes.php
y para asegurarnos de que goto
se pasó un parámetro de URL en la URL. Luego prueba el valor de goto
usar una instrucción switch
/ case
para ver si tiene un valor de 'build-styleguide-page'
; si es así, se redirige a su hipotética declarada, por ejemplo, Google, de lo contrario, simplemente redirigimos 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 el after_setup_theme
enlace / redirect_from_admin_menu()
función para que sea más fácil agregar goto
redireccionamientos adicionales si es necesario; simplemente agregue 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!
'-5'
y no-5
, de lo contrario la clave es considerado no válido (creo) .. (cadenas negativas trabaja sin embargo, si no me equivoco) ..array_push()
agregar los elementos del menú para evitar chocar con otros complementos.global $submenu; $key = end(array_keys($submenu['tools.php'])) + 1; $submenu['tools.php'][$key++] =
etc.He logrado lo mismo con esto:
Lo que haces aquí es agregar un elemento de menú y definir slug, luego en 'admin_init' verifica si existe slug y redirige a la ubicación deseada.
fuente