functions.php with wp_redirect($ url);出口();使wordpress网站空白

时间:2017-10-11 12:11:52

标签: php wordpress function url-redirection

我正在创建一个表单,供用户从前端提交帖子。 提交表单后,应将用户重定向到他们刚刚创建的帖子。

我在functions.php中有这段代码。但是它让我的网站空白......

我认为它与exit()行相关,我试图修改它但它不起作用,根本没有任何反应。它只显示一个白页。

  <?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 个答案:

答案 0 :(得分:1)

好吧,它不会像那样工作。 首先,你不应该在加载functions.php时添加类似的脚本(因为在WP实际决定如何处理来自浏览器的请求之前,它的加载时间太早了) - 使用wp_enqueue_scripts:

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