Ciao @ Tom ,
Se capisco correttamente la tua domanda non devi sapere come aggiungere un link al menu (sembra che tu lo sappia già) ma invece devi imparare come far reindirizzare correttamente il tuo link, giusto?
Reindirizzamento a un URL esterno da una voce del menu Amministratore
In questo caso, ciò che devi fare è non utilizzare la funzione di voce di menu ma "agganciare" WordPress abbastanza presto in modo tale che non abbia prodotto nulla tranne le intestazioni HTTP. Il primo hook quando si chiama /wp-admin/themes.php
sembra essere after_setup_theme
e sembra funzionare bene.
Usa un "Menu Slug" in modo da poterlo testare in un gancio
Ma per farlo funzionare dobbiamo prima modificare la tua chiamata add_theme_page
in admin_menu
hook / la tua create_theme_style_page()
funzione. Abbiamo abbandonato il quinto parametro (la funzione da chiamare per implementare l'opzione admin) perché non ne abbiamo bisogno e abbiamo modificato il quarto parametro (il "menu slug" ) themes.php?goto=build-styleguide-page
.
Sebbene avremmo potuto scegliere quasi letteralmente qualsiasi cosa per il quarto parametro, dato che reindirizzeremo ho indirizzato alla stessa pagina ( themes.php
) di altre opzioni di aspetto per coerenza. Ho anche solo arbitrariamente inventato il nome goto
perché WordPress non lo usa e sembra avere senso per questo.
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'
);
}
A proposito, ci siamo sbarazzati della tua build_styleguide_page()
funzione perché non ne abbiamo bisogno per questa soluzione.
Reindirizza nel primo hook per themes.php
:after_setup_theme
Come ultimo bit di codice implementiamo il nostro after_setup_theme
hook nella nostra redirect_from_admin_menu()
funzione. Abbiamo test per vedere se la pagina corrente è themes.php
e per garantire che un parametro URL sia goto
stato passato sull'URL. Quindi verifica il valore goto
dell'uso di un'istruzione switch
/ case
per vedere se ha un valore di 'build-styleguide-page'
; in tal caso reindirizza all'ipotetico dichiarato, ad esempio Google, altrimenti reindirizziamo alla dashboard di amministrazione:
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;
}
}
Gli appunti:
Ho scelto di usare l' istruzione switch
/ case
nella funzione after_setup_theme
hook / in redirect_from_admin_menu()
modo che sarebbe più facile aggiungere ulteriori goto
reindirizzamenti se necessario; aggiungi solo altri casi.
le funzioni wp_redirect()
e wp_safe_redirect()
non terminano effettivamente; è necessario emettere esplicitamente un'istruzione di uscita per arrestare WordPress e non sovrascrivere il reindirizzamento.
Spero che sia di aiuto!
'-5'
e no-5
, altrimenti la chiave è considerata non valida (credo) .. (le stringhe negative funzionano però, se non sbaglio) ..