Post à partir de la fin avant que par les utilisateurs connectés, les messages de formulaire comme « posté par: »

wordpress.stackexchange https://wordpress.stackexchange.com/questions/9155

  •  16-10-2019
  •  | 
  •  

Question

J'ai Roulotté main un formulaire pour l'affichage de la fin de l'avant, avec quelques fonctions personnalisées que je avais besoin. Cependant, je l'ai fait la seule forme accessible lorsqu'un utilisateur est connecté, et je voudrais avoir les articles apparaissent comme étant affiché par cet utilisateur. Pensées?? Voici mon code actuel:

backend:

if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && ($_POST['action']== 'new_post')) {
    $has_errors = false;

    $title = $_POST['title'];
    $tablature = $_POST['tablature'];
    $performer = $_POST['performer'];
    $composer = $_POST['composer'];
    $submitter = $_POST['submitter'];
    $cat = array( $_POST['cat'] );

    if(!isset($title)) { echo '<div class="error">Title required.</div>'; $has_errors = true; }
    if(!isset($tablature)) { echo '<div class="error">Description required.</div>'; $has_errors = true; }
    if(!isset($performer)) { echo '<div class="error">Performer required.</div>'; $has_errors = true; }
    if(!isset($composer)) { echo '<div class="error">Composer required.</div>'; $has_errors = true; }
    if($cat == -1) { echo '<div class="error">Please select a category.</div>'; $has_errors = true; }

    $tags = $_POST['post_tags'];
    if (!$has_errors){
    // Save <title>  by: <performer>
    $title .= " by " .$performer;

    // Save Composed by: <composer> Performed by: <performer> <tablature>
    $content = "<h4>Composed by: ".$composer."</h4><h4>Performed by: ".$performer."</h4><p>Submitted by: ".$submitter."</p><br/>".$tablature;

    $new_post = array(
        'post_title' => $title,
        'post_content' => $content,
        'post_category' => $cat,
        'post_status' => 'draft'
    );
    wp_insert_post($new_post);

    // save email and submitter as post meta in custom fields
    wp_redirect( home_url('/thank-you/') );
}

}

frontend:

<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">
<p><label for="submitter">Submitted By</label><br />
<input type="text" id="submitter" value="" tabindex="1" size="20" name="submitter" class=”required” minlength="3" />
</p>
<p><label for="email">Email Address</label><br />
<input type="text" id="email" value="" tabindex="2" size="20" name="email" />
</p>
<p><label for="title">Song Title</label><br />
<input type="text" id="title" value="" tabindex="3" size="20" name="title" class=”required” minlength="3" />
</p>
<p><label for="composer">Composed By</label><br />
<input type="text" id="composer" value="" tabindex="4" size="20" name="composer" class=”required” minlength="3" />
</p>
<p><label for="performer">Performed By</label><br />
<input type="text" id="performer" value="" tabindex="5" size="20" name="performer" class=”required” minlength="3" />
</p>
<p><label for="tablature">Song Body</label><br />
<textarea id="tablature" tabindex="6" name="tablature" cols="50" rows="6" class=”required” minlength="50"></textarea>
</p>
 <p><?php wp_dropdown_categories( 'show_option_none=Category&tab_index=7&taxonomy=category&exclude=5&class=required' ); ?></p>
<p align="right"><input type="submit" value="Submit" tabindex="8" id="submit" name="submit" /></p>
<input type="hidden" name="action" value="new_post" />
<?php wp_nonce_field( 'new-post' ); ?>
</form>
</div>

Merci!

Était-ce utile?

La solution

vous pouvez utiliser

global $current_user;
get_currentuserinfo();

et puis ajoutez

'post_author' => $current_user->ID

à votre tableau de new_post de $.

vous pouvez utiliser

<p>Posted by: <?php the_author(); ?></p>

Autres conseils

En supposant que l'utilisateur est connecté, puis wp_insert_post devrait définir automatiquement le champ après l'auteur correctement. Avez-vous essayé simplement appeler the_author () à la sortie de l'auteur du nom de messages?

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top