2017-10-11 91 views
1

我正在創建一個表格,供用戶從前端提交帖子。 提交表單後,應將用戶重定向到他們剛創建的職位。

我在我的functions.php中有這段代碼。但它使我的網站空白...

我認爲它與退出()線,我試圖修改它,但它不起作用,什麼也沒有發生。它只是顯示一個白頁。

<?php 
    wp_register_script('validation', 'http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js', array('jquery')); 
    wp_enqueue_script('validation'); 


    $post_information = array(
     'post_title' => wp_strip_all_tags($_POST['postTitle']), 
     'post_content' => $_POST['postContent'], 
     'post_type' => 'post', 
     'post_status' => 'publish' 
    ); 

    $post_id = wp_insert_post($post_information); 
    $url = get_permalink($post_id); 
    wp_redirect($url); 
    exit(); 

    ?> 

你有什麼想法嗎?我該如何解決這個問題?謝謝!

+1

它只是在你的functions.php裏面,或者它被包含在一個添加到add_action或類似的動作鉤子的函數中? – janh

+0

這就像我在我的functions.php .. – heroickoala

回答

1

好吧,它不會那樣工作。 首先,不應該在加載functions.php時添加這樣的腳本(因爲在WP已經確定如何處理來自瀏覽器的請求之前,它太早加載了) - 使用wp_enqueue_scripts for即:

<?php 
function add_my_scripts() { 
    wp_register_script('validation', 'http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js', array('jquery')); 
    wp_enqueue_script('validation'); 
} 
add_action('wp_enqueue_scripts', "add_my_scripts"); 
?> 

您創建的新帖子會在每個請求上運行 - 即使您的瀏覽器想要顯示該新帖子時也是如此。

取決於你需要什麼,你可能要付諸行動掛鉤此爲好,但它應該幫助已如果你檢查它實際上包含postTitle,像這樣的POST請求:

<?php 
if($_SERVER["REQUEST_METHOD"] == "POST" && array_key_exists("postTitle", $_POST)) { 
    $post_information = array(
     'post_title' => wp_strip_all_tags($_POST['postTitle']), 
     'post_content' => $_POST['postContent'], 
     'post_type' => 'post', 
     'post_status' => 'publish' 
    ); 

    $post_id = wp_insert_post($post_information); 
    if(is_wp_error($post_id)) { 
     print "An error occured :(\n"; 
     var_export($post_id); 
    } 
    else { 
      $url = get_permalink($post_id); 
      wp_redirect($url); 
    } 
    exit(); 
} 
?> 
+0

太棒了!完美的作品!感謝您的解釋! :) – heroickoala