wp_redirect () - başlıklar zaten gönderildi


10

wp_redirect()Sayfada başarıyla bir kayıt formu gönderdikten sonra kullanıcıyı yeniden yönlendirmek için kullanmaya çalışıyorum .

Çalışmıyor ve aşağıdaki hatayı gösteriyor:

Uyarı: Üstbilgi bilgileri değiştirilemiyor - / Applications / MAMP / htdocs / theme / wp- adresinden zaten (üstbilgiler /Applications/MAMP/htdocs/theme/wp-content/themes/test/header.php:10) tarafından gönderilen başlıklar değiştirilemiyor 1178 satırındaki / pluggable.php içerir

Daha önce çıktı alındığını anlıyorum, bu yüzden çalışmıyor, ama bu işi nasıl yapacağım hakkında hiçbir fikrim yok.

Kayıt formu bir işlev tarafından oluşturulur ve işlevlerim içinde başka bir işlev tarafından gönderilir. Php.

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

Sonra her iki işlev de kayıt formunu göstermek istediğim yerde kullanılır.

Korkarım bu yapılacak en iyi şey değil. Bunu yapan bir eylem yaratmalıyım, ama bunu nasıl uygulayacağımı bilmiyorum. Bulduğum eğiticilerin çoğu sonuçları doğrudan aynı sayfada gösteriyor ve ek bir yönlendirme gerektirmiyor. Belki de bu yüzden fonksiyonların içindeki fonksiyonlarla çalışıyorlar. Php

Yanıtlar:


16

Cevabı buldum (üzerinden)

Bu işlevi kullanmak yerine, "wp_loaded" a bir başlık ekledim, bu da herhangi bir başlık gönderilmeden önce yüklenmesini sağlar.

<?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;
    }
}     
?>

Hatadan kurtuldu, ancak mesaj kaydedilmedi!
Subrata Sarkar

6

Daha wp_redirect() önce kullanmanız gerekir get_header() O zaman başlık hatası göstermez.


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();//....
}
});

Yardımın için teşekkürler, ama bu kod benim için işe yaramadı. Çalışması için eylemi "wp_loaded" e eklemeniz gerekiyor (Cevabımı gör)
Snowball

is_page_template()Koşullu olarak yeniden yönlendirirken kurmanız gerekiyorsa iyi çalışır .
Lawless

1

bunu da yapabilirsin

Aşağıdaki satır yerine

wp_redirect ( "$ url");

yazmak

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

veya

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

Sorununuzu kesinlikle çözecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.