wp_redirect () - हेडर पहले से भेजे गए


10

मैं wp_redirect()पृष्ठ पर साइनअप फ़ॉर्म को सफलतापूर्वक सबमिट करने के बाद उपयोगकर्ता को पुनर्निर्देशित करने के लिए उपयोग करने का प्रयास कर रहा हूं ।

यह काम नहीं कर रहा है और निम्न त्रुटि दिखाता है:

चेतावनी: शीर्ष लेख की जानकारी को संशोधित नहीं कर सकते - हेडर पहले से ही भेजे गए (आउटपुट /Applications/MAMP/htdocs/theme/wp-content/themes/test/header.php:10 पर) / एप्लिकेशन / MAMP / htdocs / theme / wp- 1178 लाइन पर / pluggable.php शामिल है

मैं समझता हूं कि पहले ही आउटपुट आ चुका है, इसीलिए यह काम नहीं कर रहा है, लेकिन इस काम को करने का कोई तरीका नहीं है।

साइनअप फ़ॉर्म एक फ़ंक्शन द्वारा प्रदान किया जाता है, और मेरे फ़ंक्शन के अंदर एक अन्य फ़ंक्शन द्वारा प्रस्तुत किया जाता है।

if ( isset( $_POST['subscribe'] ) ) {
    // Submits the form and should then redirect
    wp_redirect("/thank-you/");
    exit;
}

फिर इन दोनों कार्यों का उपयोग किया जाता है जहां मैं साइनअप फॉर्म दिखाना चाहता हूं।

मुझे डर है कि सबसे अच्छी बात नहीं है। मुझे कुछ कार्रवाई करनी चाहिए जो ऐसा करती है, लेकिन मुझे नहीं पता कि इसे कैसे लागू किया जाए। मैंने पाया अधिकांश ट्यूटोरियल सीधे उसी पृष्ठ पर परिणाम दिखाते हैं और अतिरिक्त रीडायरेक्ट की आवश्यकता नहीं होती है। शायद इसलिए वे कार्यों के अंदर कार्य कर रहे हैं। एफपी

जवाबों:


16

उत्तर मिला (के माध्यम से)

फ़ंक्शन का उपयोग करने के बजाय मैंने "wp_loaded" में एक क्रिया जोड़ी, जो यह सुनिश्चित करता है कि किसी भी हेडर को भेजे जाने से पहले यह लोड हो जाता है।

<?php
add_action ('wp_loaded', 'my_custom_redirect');
function my_custom_redirect() {
    if ( isset( $_POST['subscribe'] ) ) {
        $redirect = 'http://example.com/redirect-example-url.html';
        wp_redirect($redirect);
        exit;
    }
}     
?>

यह त्रुटि से छुटकारा मिल गया लेकिन पोस्ट नहीं बचा!
सुब्रत सरकार

6

आपको wp_redirect() पहले उपयोग get_header() करना होगा तब यह शीर्ष लेख त्रुटि नहीं दिखाएगा।


3
add_action('template_redirect', function(){
if(isset($_POST['subscriptio'])){// make this condition such that it only matches when a registraiotn form get submitted
/**
 * do your stuff here
 */
wp_redirect();//....
}
});

मदद के लिए धन्यवाद, लेकिन उस कोड ने मेरे लिए काम नहीं किया। कार्रवाई करने के लिए "wp_loaded" को जोड़ने के लिए इसे काम करने की आवश्यकता है (मेरा उत्तर देखें)
स्नोबॉल

अच्छी तरह से काम करता है अगर आपको is_page_template()सशर्त पुनर्निर्देशन स्थापित करने की आवश्यकता है ।
लॉलेस

1

आप यह भी कर सकते हैं

नीचे की लाइन के बजाय

wp_redirect ( "$ यूआरएल");

लिखो

echo("<script>location.href = '".$url."'</script>");

या

<?php <script><?php echo("location.href = '".$url."';");?></script>?>

यह निश्चित रूप से आपकी समस्या का समाधान करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.