हाय @Tom ,
यदि मैं आपके प्रश्न को सही ढंग से समझता हूं तो आपको यह जानने की आवश्यकता नहीं है कि मेनू में लिंक कैसे जोड़ा जाए (ऐसा लगता है कि आप पहले से ही जानते हैं) लेकिन इसके बजाय आपको यह जानने की आवश्यकता है कि अपने लिंक को सही ढंग से कैसे पुनर्निर्देशित करें?
एक व्यवस्थापक मेनू आइटम से एक बाहरी URL पर पुनर्निर्देशित करना
यदि ऐसा करने के लिए आपको मेनू आइटम फ़ंक्शन का उपयोग नहीं करना है, लेकिन इसके बजाय "हुक" वर्डप्रेस पर्याप्त है, तो यह संभवतः HTTP हेडर को छोड़कर कुछ भी आउटपुट नहीं करता है। कॉल करते समय सबसे पहला हुक /wp-admin/themes.phpदिखाई देता है after_setup_themeऔर यह अच्छी तरह से काम करता है।
एक "मेनू स्लग" का उपयोग करें ताकि आप हुक में इसके लिए परीक्षण कर सकें
लेकिन इसे काम पर लाने के लिए हमें सबसे पहले अपने कॉल को हुक / अपने फ़ंक्शन add_theme_pageमें संशोधित करना होगा। हमने पाँचवाँ पैरामीटर (फ़ंक्शन को एडमिन विकल्प को लागू करने के लिए कॉल करने के लिए) गिरा दिया क्योंकि हमें इसकी आवश्यकता नहीं है, और चौथे पैरामीटर ( "मेनू स्लग" ) को बदल दिया है ।admin_menucreate_theme_style_page()themes.php?goto=build-styleguide-page
यद्यपि हम चौथे पैरामीटर के लिए लगभग शाब्दिक रूप से कुछ भी चुन सकते थे, बशर्ते हम एक ही पृष्ठ ( themes.php) के लिए अन्य उपस्थिति विकल्पों के रूप में रूट किए गए रीडायरेक्ट करने जा रहे हों । मैं भी बस मनमाने ढंग से नाम के साथ आया था gotoक्योंकि वर्डप्रेस इसका उपयोग नहीं करता है और इसके लिए यह समझ में आता है।
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()फ़ंक्शन से छुटकारा मिल गया क्योंकि हमें इसके समाधान की आवश्यकता नहीं है।
इसके लिए शुरुआती हुक में पुनर्निर्देशित करें themes.php:after_setup_theme
कोड के हमारे अंतिम बिट के रूप में हम अपने after_setup_themeहुक को अपने redirect_from_admin_menu()फ़ंक्शन में लागू करते हैं। हमारे पास यह देखने के लिए परीक्षण है कि क्या वर्तमान पृष्ठ है themes.phpऔर यह सुनिश्चित करने के लिए कि URL पर एक URL पैरामीटर gotoपारित किया गया था। तब यह देखने के लिए / कथन का gotoउपयोग करने के मूल्य का परीक्षण करता है कि क्या इसका मूल्य है ; यदि ऐसा है तो यह आपके बताए गए काल्पनिक उदाहरणों जैसे Google पर अनुप्रेषित करता है अन्यथा हम केवल व्यवस्थापक डैशबोर्ड पर वापस भेज देते हैं:switchcase'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;
}
}
टिप्पणियाँ:
मैंने हुक / फ़ंक्शन में switch/ caseस्टेटमेंट का उपयोग करने का चयन किया ताकि जरूरत पड़ने पर अतिरिक्त रीडायरेक्ट को जोड़ना आसान हो; अभी और केस स्टेटमेंट जोड़ें।after_setup_themeredirect_from_admin_menu()goto
wp_redirect()और wp_safe_redirect()कार्यों वास्तव में समाप्त नहीं है, वर्डप्रेस को रोकने के लिए और अपने रीडायरेक्ट को ओवरराइड नहीं करने के लिए आपको एक निकास कथन जारी करने की आवश्यकता है।
उम्मीद है की यह मदद करेगा!
'-5'और नहीं-5, अन्यथा कुंजी को अमान्य माना जाता है (मुझे लगता है) .. (नकारात्मक तार काम करता है, अगर मैं गलत नहीं हूं) ..