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.php
tampaknya after_setup_theme
dan 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_page
di admin_menu
hook / 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 goto
karena 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_theme
hook kami di redirect_from_admin_menu()
fungsi kami . Kami mengujinya untuk melihat apakah halaman saat ini themes.php
dan untuk memastikan parameter URL goto
telah diteruskan pada URL. Kemudian ia menguji nilai goto
menggunakan pernyataan switch
/ case
untuk 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
/ case
di after_setup_theme
hook / redirect_from_admin_menu()
fungsi sehingga akan lebih mudah untuk menambahkan arahan goto
ulang 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) ..array_push()
menambahkan item menu untuk menghindari bertabrakan dengan plugin lain.global $submenu; $key = end(array_keys($submenu['tools.php'])) + 1; $submenu['tools.php'][$key++] =
dll.Saya telah mencapai hal yang sama dengan ini:
Apa yang Anda lakukan di sini adalah Anda menambahkan item menu dan mendefinisikan siput, lalu pada 'admin_init' Anda memeriksa apakah siput ada dan mengarahkan ulang ke lokasi yang Anda inginkan.
sumber