2017-10-10 3 views
1

J'ai un formulaire, accessible par n'importe qui avec le lien sur mon site Wordpress. Lorsque l'utilisateur soumet le nouveau message, je veux qu'il soit redirigé vers le message qu'il vient de créer.Rediriger vers le nouveau message soumis

Voici la forme:

<?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' 
); 

wp_insert_post($post_information); 
$post_id = wp_insert_post($post_information); 
?> 


<form action="" id="primaryPostForm" method="POST" onsubmit="return getContent()"> 

<fieldset> 
    <label for="postTitle"><?php _e('Post Title:', 'framework') ?></label> 

    <input type="text" name="postTitle" id="postTitle" class="required" /> 
</fieldset> 

<fieldset> 
    <label for="postContent"><?php _e('Post Content:', 'framework') ?></label> 
    <textarea name="postContent" id="postContent" rows="8" cols="30" class="required"></textarea> 
</fieldset> 

<fieldset> 
    <input type="hidden" name="submitted" id="submitted" value="true" /> 

    <button type="submit"><?php _e('Add Post', 'framework') ?></button> 
    <?php wp_nonce_field('new-post'); ?> 
</fieldset> 

</form> 

Je pensais que ce en ajoutant à la fin du code PHP

wp_redirect(get_permalink($post_id)); 
die(); 

il rediriger l'utilisateur vers le poste qu'ils ont créé ... J'ai essayé différentes choses mais cela ne fonctionne pas. Il ne redirige pas n'importe où. Avez-vous des idées? Comment puis je faire ça? Merci!

Répondre

1

bien vous répétez l'insertion. cela peut être un problème. essayez ceci .. il DEVRAIT fonctionner

$post_id = wp_insert_post($post_information); 
$url = get_permalink($post_id); 
wp_redirect($url); 
exit(); 
+1

Merci Ralph pour votre réponse. Je viens d'essayer, et tout le site est maintenant vide, plus rien n'apparaît (html etc.). Il semble être lié à "exit();", dès que je le supprime il fonctionne à nouveau (mais pas la redirection). Savez-vous pourquoi ça fait ça? Merci! – heroickoala

+0

vous pouvez remplacer par Die(), mais peu importe ce que vous utilisez. die est un alias pour la sortie:/ –

+0

si cela ne fonctionne pas, je vais avoir besoin d'un meilleur contexte, car il pourrait échouer en fonction de l'endroit où vous essayez d'accomplir cela. essayez-vous cela à partir d'un modèle? un plugin ?, le fichier de fonctions? ce qui déclenche l'exécution de votre code. présence d'un élément de poste? –