Merhaba @Tom ,
Sorunuzu doğru bir şekilde anlarsam, menüye nasıl bir bağlantı ekleyeceğinizi bilmenize gerek yok (zaten bunu biliyorsunuz gibi görünüyor), ancak bunun yerine, doğru bir şekilde yönlendirmek için bağlantınızı nasıl alacağınızı öğrenmeniz gerekiyor, değil mi?
Yönetici Menüsü Öğesinden Harici URL'ye Yönlendirme
Eğer öyleyse yapmanız gereken şey menü öğesi işlevini kullanmak değil, bunun yerine WordPress'i muhtemelen HTTP başlıkları dışında hiçbir şey vermeyecek kadar erken "kanca" yapmaktır . Çağıran erken kanca /wp-admin/themes.php
gibi görünen after_setup_theme
ve iyi işe görünür.
Bir "Menü Slug" kullanın, Böylece Kancada Test Edebilirsiniz
Ama biz çağrı değiştirmek için ilk ihtiyaç işe gitmek için add_theme_page
de admin_menu
kanca / senin create_theme_style_page()
fonksiyonu. Beşinci parametreyi (admin seçeneğini uygulamak için çağrılacak işlev) bıraktık çünkü buna ihtiyacımız yok ve dördüncü parametreyi ( "menü slug" ) olarak değiştirdik themes.php?goto=build-styleguide-page
.
Dördüncü parametre için neredeyse tam anlamıyla herhangi bir şey seçmiş olsak da themes.php
, tutarlılık için diğer görünüm seçenekleriyle aynı sayfaya ( ) yönlendirdiğim için yönlendireceğiz . Ben de sadece isim ile geldim goto
çünkü WordPress onu kullanmıyor ve bunun için mantıklı görünüyor.
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, build_styleguide_page()
işlevinizden kurtulduk çünkü bu çözüm için ona ihtiyacımız yok.
En Eski Kancaya aşağıdakiler için yönlendirin themes.php
:after_setup_theme
Kodumuzun son biti olarak, after_setup_theme
kancalarımızı redirect_from_admin_menu()
işlevimize uyguluyoruz . Geçerli sayfanın olup olmadığını themes.php
ve URL parametresinin URL'ye goto
iletildiğinden emin olmak için test ettik . Sonra / ifadesi goto
kullanmanın değerini ; öyleyse, belirttiğiniz varsayımlara, örneğin Google'a yönlendirir, aksi takdirde yalnızca yönetici kontrol paneline yönlendiririz:switch
case
'build-styleguide-page'
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;
}
}
Notlar:
Gerekirse ek yönlendirmeler eklemek daha kolay olacak şekilde kanca / işlevinde switch
/ case
ifadesini kullanmayı seçtim ; daha fazla vaka ifadesi eklemeniz yeterlidir.after_setup_theme
redirect_from_admin_menu()
goto
wp_redirect()
ve wp_safe_redirect()
işlevleri aslında sonlandırmak gerekmez; WordPress'in durmasını ve yönlendirmenizi geçersiz kılmamasını sağlamak için bir çıkış deyimi açıkça yayınlamanız gerekir.
Bu yardımcı olur umarım!
'-5'
ve değil-5
, başka anahtar geçersiz sayılır (sanırım) .. (ben yanlış değilim, negatif dizeleri olsa çalışır) ..