Salut @ Tom ,
Si je comprends bien votre question, vous n'avez pas tellement besoin de savoir comment ajouter un lien au menu (il semble que vous le sachiez déjà), mais au lieu de cela, vous devez apprendre à faire rediriger votre lien correctement, non?
Redirection vers une URL externe à partir d'un élément du menu Admin
Si c'est le cas, ce que vous devez faire est de ne pas utiliser la fonction d'élément de menu, mais de "connecter" WordPress suffisamment tôt pour qu'il ne produise rien, sauf éventuellement des en-têtes HTTP. Le premier crochet lors de l'appel /wp-admin/themes.phpsemble être after_setup_themeet il semble bien fonctionner.
Utilisez un "Menu Slug" afin que vous puissiez le tester dans un crochet
Mais pour le faire fonctionner, nous devons d'abord modifier votre appel add_theme_pagedans le admin_menuhook / votre create_theme_style_page()fonction. Nous avons laissé tomber le cinquième paramètre (la fonction à appeler pour implémenter l'option admin) parce que nous n'en avons pas besoin, et avons changé le quatrième paramètre (le "slug de menu" ) pour être themes.php?goto=build-styleguide-page.
Bien que nous aurions pu choisir pratiquement n'importe quoi pour le quatrième paramètre, étant donné que nous allons rediriger j'ai routé vers la même page ( themes.php) que d'autres options d'apparence pour la cohérence. J'ai aussi juste arbitrairement trouvé le nom gotoparce que WordPress ne l'utilise pas et cela semble logique.
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, nous nous sommes débarrassés de votre build_styleguide_page()fonction car nous n'en avons pas besoin pour cette solution.
Rediriger dans le premier crochet pour themes.php:after_setup_theme
Comme notre dernier morceau de code, nous implémentons notre after_setup_themehook dans notre redirect_from_admin_menu()fonction. Nous l'avons testé pour voir si la page actuelle est themes.phpet pour nous assurer qu'un paramètre d'URL a gotoété transmis à l'URL. Ensuite, il teste la valeur de l' gotoutilisation d'une instruction switch/ casepour voir si elle a une valeur de 'build-styleguide-page'; si c'est le cas, il redirige vers votre hypothétique déclarée, par exemple Google, sinon nous redirigeons simplement vers le tableau de bord d'administration:
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;
}
}
Remarques:
J'ai choisi d'utiliser l' instruction switch/ casedans la fonction after_setup_themehook / redirect_from_admin_menu()afin qu'il soit plus facile d'ajouter des gotoredirections supplémentaires si vous en avez besoin; ajoutez simplement plus de déclarations de cas.
les fonctions wp_redirect()et wp_safe_redirect()ne se terminent pas réellement; vous devez explicitement émettre une instruction de sortie pour que WordPress s'arrête et ne remplace pas votre redirection.
J'espère que cela t'aides!
'-5'et non-5, sinon la clé est considérée comme invalide (je pense) .. (les chaînes négatives fonctionnent bien, si je ne me trompe pas) ..