我正在创建一个表单,供用户从前端提交帖子。
提交表单后,用户应该被重定向到他们刚刚创建的帖子。
我的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();
?>
你有什么想法?我该如何解决这个问题?谢谢!
好吧,它不会那样工作。
首先,你不应该在加载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();
}
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)