2017-10-16 18 views
2

Je dois single-mypost.php pour afficher le post unique mypost, dans lequel l'utilisateur peut soumettre un formulaire pour msgs (msgs est un autre type de message personnalisé pour les messages privés). Lorsque l'utilisateur soumet un nouveau formulaire, il est parfaitement ajouté à msgs mais les champs personnalisés mypost changent à vide. J'ai ajouté du code à l'aide une fois je suis utilisateur soumet le formulairefonction wp_insert_post() à l'intérieur de single- {customposttype} .php effacement des champs personnalisés

<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> 

am utilise wp_insert_post pour insérer poste. code que j'ai ajouté avant 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

Incluez tout le code requis, en particulier l'action que vous utilisez pour l'insertion. –

+0

merci pour répondre bro, ce le formulaire avec des champs et une fois que l'utilisateur soumet suis en utilisant "wp_insert_post". c'est le code de la fonction que j'ai ajouté. –

Répondre

0

S'il vous plaît ajouter

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

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

0

Je pense que la deuxième partie du code doit être dans un fichier séparé, il ressemblera à quelque chose comme ceci:

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

... your code here ... 

En option, faire la soumission du formulaire via AJAX, avec wp_ajax_ action hoo k.

L'idée principale n'utilise pas wp_insert_post() dans votre modèle single-mypost.php.