2015-06-13 90 views
0

我想用wp_mail發送一封電子郵件,然後,如果郵件發送成功,將用戶重定向到另一個頁面(或者,如果不成功,則返回錯誤頁面)。無法讓wp_redirect工作

我的代碼如下所示。該電子郵件實際上是發送,所以wp_mail工作,但我不能讓重定向工作。

<?php 

/* Template Name: Redirect Template */ 

?> 

<?php 

$to = "[email protected]"; 

$subject = 'This is a test.'; 
$message = 'This is a test of the wp_mail function.'; 
$headers = ''; 

$sent_message = wp_mail($to, $subject, $message, $headers); 

if ($sent_message) { 

    $url_1 = "http://www.some-url.com"; 
    wp_redirect($url_1); 
    exit(); 

} else { 
    $url_2 = "http://www.some-other_url.com"; 
    wp_redirect($url_2); 
    exit(); 
} 

?> 

<?php get_header(); ?> 


     <?php while (have_posts()) : the_post(); ?> 

      <?php get_template_part('content', 'page'); ?> 

     <?php endwhile; // end of the loop. ?> 


<?php get_footer(); ?> 
+0

你的意思是什麼重定向「不工作」?怎麼了? – rnevius

+0

我沒有重定向到指定的頁面。在我上面的代碼中,我沒有發送到新的URL,例如'http://www.some-url.com' – Mekong

+0

頁面模板是做這種處理的錯誤地方。已經指出,直接的問題是你的文件中有空白,但根本問題是你使用你的UI做後端處理。爲什麼你需要一個模板,如果它只是發送一封電子郵件然後重定向? –

回答

2

您需要擺脫關閉和打開PHP標記之間的空白區域。因爲你有這個空間,WordPress在重定向運行之前啓動輸出(這是不允許的)。擺脫你的文件的頂部以下內容:

?> 

<?php 

,以便該文件的頂部變成:

<?php 

/* Template Name: Redirect Template */ 

$to = "[email protected]"; 
+0

謝謝Mevius。我刪除了白色空間,並立即開始工作。非常感激! – Mekong

+0

不客氣。在相關說明中,您不需要關閉代碼中的所有''標記。爲了簡化,您可以在文件的頂部添加一個開始標籤,之後再沒有。 – rnevius