2017-10-16 51 views
2

我有single-mypost.php顯示mypost單個帖子,其中用戶可以提交表單的消息(消息是另一個自定義帖子類型的私人消息)。當用戶提交表單時,新帖子完全添加到郵件中,但是單個mypost自定義字段將更改爲空。我已添加使用的代碼函數wp_insert_post()內單{{customposttype} .php清除自定義字段

<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

感謝您的回覆bro,這是帶有字段的表單,一旦用戶提交,我正在使用「wp_insert_post」。這是我添加的功能代碼。 –

回答

0

請加

<?php if (isset($_POST[ 'textareafield' ])) {    
echo $_POST[ 'textareafield' ]; 
}?> 

<textarea name="textareafield"></textarea>

0

之間我覺得代碼的第二部分應該是在一個單獨的文件,它會是這個樣子:

require('wp-load.php'); // make sure that it is the correct path to this file 

... your code here ... 

作爲一個選項,通過AJAX進行表單提交,使用wp_ajax_ action hoo ķ。

關鍵的想法是在您的single-mypost.php模板中不使用wp_insert_post()