Hai @ Tom ,
Jika saya memahami pertanyaan Anda dengan benar, Anda tidak perlu terlalu banyak tahu cara menambahkan tautan ke menu (sepertinya Anda sudah tahu itu) tetapi sebaliknya perlu belajar cara membuat tautan Anda untuk mengarahkan ulang dengan benar, bukan?
Mengarahkan kembali ke URL Eksternal dari Item Menu Admin
Jika demikian yang perlu Anda lakukan adalah tidak menggunakan fungsi item menu melainkan "mengait" WordPress cukup awal sehingga tidak menghasilkan apa-apa kecuali kemungkinan header HTTP. Kait paling awal saat menelepon /wp-admin/themes.phptampaknya after_setup_themedan berfungsi dengan baik.
Gunakan "Menu Slug" Jadi Anda Bisa Mengujinya di Hook
Tetapi untuk membuatnya berfungsi, pertama-tama kita perlu memodifikasi panggilan Anda add_theme_pagedi admin_menuhook / create_theme_style_page()fungsi Anda . Kami menjatuhkan parameter kelima (fungsi untuk memanggil untuk mengimplementasikan opsi admin) karena kami tidak membutuhkannya, dan mengubah parameter keempat ( "menu slug" ) menjadi themes.php?goto=build-styleguide-page.
Meskipun kami dapat memilih hampir apa saja untuk parameter keempat, mengingat kami akan mengarahkan saya dialihkan ke halaman yang sama ( themes.php) sebagai opsi tampilan lain untuk konsistensi. Saya juga secara sewenang-wenang membuat nama itu gotokarena WordPress tidak menggunakannya dan sepertinya masuk akal untuk ini.
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, kami menyingkirkan build_styleguide_page()fungsi Anda karena kami tidak membutuhkannya untuk solusi ini.
Redirect di Hook Terlama untuk themes.php:after_setup_theme
Sebagai bit kode terakhir kami, kami menerapkan after_setup_themehook kami di redirect_from_admin_menu()fungsi kami . Kami mengujinya untuk melihat apakah halaman saat ini themes.phpdan untuk memastikan parameter URL gototelah diteruskan pada URL. Kemudian ia menguji nilai gotomenggunakan pernyataan switch/ caseuntuk melihat apakah memiliki nilai 'build-styleguide-page'; jika demikian itu akan diarahkan ke hipotesis Anda yang dinyatakan misalnya Google kalau tidak, kami hanya mengarahkan kembali ke dasbor admin:
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;
}
}
Catatan:
Saya memilih untuk menggunakan pernyataan switch/ casedi after_setup_themehook / redirect_from_admin_menu()fungsi sehingga akan lebih mudah untuk menambahkan arahan gotoulang jika Anda perlu; cukup tambahkan lebih banyak pernyataan kasus.
yang wp_redirect()dan wp_safe_redirect()fungsi tidak benar-benar mengakhiri; Anda perlu mengeluarkan pernyataan keluar secara eksplisit untuk menghentikan WordPress dan tidak mengganti arahan ulang Anda.
Semoga ini membantu!
'-5'dan tidak-5, kalau kuncinya dianggap tidak valid (saya pikir) .. (string negatif berfungsi, jika saya tidak salah) ..