2009-01-30 22 views
10

मैं एक वर्डप्रेस प्लगइन लिख रहा हूं।वर्डप्रेस में विभिन्न व्यवस्थापक पेज पर रीडायरेक्ट कैसे करें?

मैं अन्य एडमिन पेज पर एक रीडायरेक्ट (POST डेटा से डीबी रिकॉर्ड बनाने के बाद ...) बनाना चाहता हूं।

न तो हैडर ("स्थान: ...) और न ही wp_redirect() काम करते हैं - मैं मिल

चेतावनी:। हेडर सूचना को संशोधित नहीं कर सकते - पहले से ही द्वारा

जो स्पष्ट कारण से आता भेजा हेडर

मैं कैसे ठीक से एक Wordpress में कोई रीडायरेक्ट प्रदर्शन करते हैं?

उत्तर

37

आपके प्रपत्र कार्रवाई पर कुछ करने के लिए, जोड़ने कार्रवाई URL के लिए 'noheader सच ='। यह आपके रीडायरेक्ट से पहले व्यवस्थापक क्षेत्र को आउटपुट से आउट होने से रोक देगा। उदाहरण के लिए:

<form name="post" action="<?php echo admin_url('admin.php?page=your-admin-page&noheader=true'); ?>" method="post" id="post"> 
+0

ओह मैन! तुमने मुझे बचाया! अनेक अनेक धन्यवाद! – alumi

+1

... डरावनी! मैं बस इसे पाने के लिए 4 घंटों की तरह बर्बाद हो गया! वर्डप्रेस क्यों यूआरएल में जोड़ने का सुझाव नहीं देता है? धन्यवाद! अगर मैं कर सकता तो मैं सौ गुना अधिक उछाल दूंगा। –

+0

अच्छा जवाब .... –

0

आप से पहले रीडायरेक्ट होता है कुछ भी नहीं है http उत्पादन के लिए भेज दिया जाता है कि यह सुनिश्चित करने की जरूरत है।

आप "window.location ('newlocation') सेट कर सकते हैं;" और यह आपको ब्राउज़र पर आउटपुट भेजने के बाद भी आपको रीडायरेक्ट करने देगा।

+0

window.location सेट करने का प्रयास करें और रीडायरेक्ट को जावास्क्रिप्ट के साथ बनाएं। –

+0

मुझे पता है, लेकिन आउटपुट आता है .../wp-admin/menu-header.php: 128 जो मानक वर्डप्रेस फ़ाइल है। मैं ob_start + ob_ * कोशिश कर सकता हूं - लेकिन ऐसा लगता है कि यह थोड़ा हैकिश है। –

0

मुझे लगता है कि आपको यह सुनिश्चित करना होगा कि wp_redirect() किसी आउटपुट को भेजने से पहले आता है।

1

मुझे लगता है कि मैं इसे गलत तरीके से कर रहा था।

मेरे कोड एक add_menu_page() ADD_ACTION ('admin_menu', ...) के अंदर अंदर था फोन

जो शायद अनुरोध (के बाद पृष्ठ पर शीर्ष लेख बना दिया गया है और प्रदर्शित) के दौरान बाद में कहा जाता है।

मेरे प्लगइन हैंडल के बाहर मेरे कोड को स्थानांतरित करने के लिए, मुख्य दायरे में काम किया - इसे कुछ सफाई, और फिक्सेस की आवश्यकता है, लेकिन काम को पुनर्निर्देशित करने की आवश्यकता है।

वैसे भी, उत्तर के लिए धन्यवाद।

-1

इसे template_redirect में लोड करें।

<script type="text/javascript"> 
window.location = '/whatever_page.php'; 
</script> 

:

add_action('template_redirect', 'myplugin_template_redirect'); 

function myplugin_template_redirect() { 
    wp_redirect('http://www.example.com/', 301); 
} 
+0

'template_redirect' वर्डप्रेस व्यवस्थापक बैकएंड के भीतर एक उपलब्ध एक्शन हुक नहीं है। – cfx

2

आप अभी भी तो WP add_page * कार्यों का उपयोग करते समय, आपके अनुरोध पर कार्रवाई करने के बाद अपने प्लगइन व्यवस्थापक पृष्ठ से अन्य व्यवस्थापक पृष्ठ पर रीडायरेक्ट करना चाहते हैं, तो आप सिर्फ कुछ इस तरह गूंज कर सकते हैं यह सिर्फ जावास्क्रिप्ट आधारित रीडायरेक्ट को "/whatever_page.php" में प्रस्तुत करता है, इस प्रकार पहले से ही डब्ल्यूपी द्वारा भेजे गए हेडर के साथ कोई परेशानी नहीं है क्योंकि क्रिस बैलेंस ने पहले ही कहा है।

बदलें "/whatever_page.php" की तरह "/wp-admin/admin.php?page=whatever_page"

+0

यह अंतिम उपाय होना चाहिए! – PinoyStackOverflower

2

एक लिंक add_submenu_page (या संबंधित समारोह) के साथ जोड़ा के लिए, एक कार्रवाई करने के लिए "load- $ hook_suffix" जोड़ने और इसलिए रीडायरेक्ट करने के लिए वापस आ $ hook_suffix का उपयोग करें। आउटपुट शुरू होने से पहले आप पेज लोड को हुक करते हैं।

संबंधित मुद्दे