我有单个mypost.php来显示mypost单个帖子,其中用户可以提交msgs的表单(msgs是私人消息的另一个自定义帖子类型)。当用户提交表单时,新帖子被完美地添加到msgs但单个mypost自定义字段正在变为空。我已经使用
添加了代码<form method="post" action="" class="gform" onSubmit="return validatebid()">
<h2>Message</h2>
<input type="hidden" name="msgfor" value="<?php echo $post->ID; ?>"/>
<input type="hidden" name="msgby" value="<?php echo get_current_user_id(); ?>"/>
<input type="hidden" name="msgdate" value="<?php echo date('Y-m-d H:i:s'); ?>"/>
<div class="row">
<label>Message</label>
<div class="field">
<textarea name="textareafield"></textarea>
</div>
</div>
<div class="row">
<input type="hidden" name="task" value="msg" />
<input type="submit" name="submit" class="red-btn" value="Message Now"/>
</div>
</form>
用户提交表单后,使用wp_insert_post插入帖子。我在get_header之前添加的代码。
if ( isset( $_POST[ 'task' ] ) && $_POST[ 'task' ] == 'msg' ) {
$post_info = array(
'post_title' => wp_strip_all_tags( $_POST[ "msgfor" ] . '-' .
$_POST[ "msgby" ] . '-' . $_POST[ "msgdate" ] ),
'post_content' => $_POST[ 'textareafield' ],
'post_type' => 'msgs',
'post_status' => 'publish'
);
$pid = wp_insert_post( $post_info );
echo $pid;
update_post_meta( $pid, "msgfor", $_POST[ "msgfor" ] );
update_post_meta( $pid, "msgby", $_POST[ "msgby" ] );
update_post_meta( $pid, "msgdate", $_POST[ "msgdate" ] );
}
答案 0 :(得分:0)
请添加
<?php if ( isset( $_POST[ 'textareafield' ] ) ) {
echo $_POST[ 'textareafield' ];
}?>
介于<textarea name="textareafield"></textarea>
答案 1 :(得分:0)
我认为代码的第二部分应该在一个单独的文件中,它看起来像这样:
require('wp-load.php'); // make sure that it is the correct path to this file
... your code here ...
作为一个选项,使用wp_ajax_
动作挂钩,通过AJAX提交表单。
关键想法是不在wp_insert_post()
模板中使用single-mypost.php
。