我正在创建一个表单,供用户从前端提交帖子。 提交表单后,应将用户重定向到他们刚刚创建的帖子。
我在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();
?>
你有什么想法吗?我该如何解决这个问题?谢谢!
答案 0 :(得分:1)
<?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();
}
?>