Bonjour à tous,

j'ai créer un formulaire de publication en dehors de l'administration de wordpress pour que les personnes puisse publier sans connaître wordpress. Ce formulaire créer un article avec un titre une description et des mots clés.

J'aimerai le compléter avec une catégorie, l'auteur et une vignette.

Voici le code :

<?php

/*

  • Si le formulaire a été soumis
    */
    if(isset($_POST['submit'])){

    $err = array();
    $err['status'] = true;
    $output = "";

    /*

    • Controle de la validité du formulaire
      */
      if(empty($_POST['title'])){
      $err['status'] = false;
      $err['msg'][] = 'Le champ "Titre" ne peut être vide.';
      }
      if(empty($_POST['content'])){
      $err['status'] = false;
      $err['msg'][] = 'Le champ "Article" ne peut être vide.';
      }

    /*

    • Enregistrement de l'article
      */
      if($err['status']){

      /*

      • Préparation des données a enregistrer
        */
        $insert = array(
        'post_status' => 'publish',
        'post_title' => htmlentities($_POST['title']),
        'post_content' => htmlentities($_POST['content']),
        'post_author' => 999,
        'post_category' => array($_POST['category'])
        );

      /*

      • Enregistrement et récupération de l'ID de l'article inséré
      • renvois 0 (false) en cas d'erreur
        */
        $post_id = wp_insert_post($insert);

      /*

      • Enregistrement des meta données
        */
        if($post_id != 0){

        /*

        • Ajout des tags
          */
          if(!empty($_POST['keywords'])){

          $keywords = explode(',',$_POST['keywords']);

          foreach($keywords as $k=>$v){
          $tag = trim(strip_tags($v));
          wp_insert_term(
          $tag,
          'post_tag',
          array(
          'slug' => sanitize_title($tag)
          )
          );
          }

        }
        $user_meta_values = array(
        'pseudo' => htmlentities($_POST['pseudo']),
        'mail' => $_POST['mail']
        );
        $output = add_post_meta($post_id, "user_meta", json_encode($user_meta_values)) ? 'Article inséré avec succès.' : 'Une erreur est survenue lors de l\enregistrement.' ;
        }

    }
    /*

    • Si le formulaire contient une (ou plusieurs) erreur
      */
      else{
      foreach($err['msg'] as $k=>$v)
      $output .= $v . '<br />';
      }
      }
      ?>

<form method="post" action="<?php echo site_url().'/ajouter'; ?>">
<p> </p>
<p> </p>
<p>
<label for="title">Titre</label>
<br><input type="text" name="title" id="title" value="" />
</p>
<p>
<label for="[youtube]content[/youtube]">Lien de la vidéo</label><br><input type="text" name="content" id="content" rows="10" cols="50"></textarea>
</p>
<p><label for="keywords">Mots clés</label><br><input type="text" name="keywords" id="keywords" value="" /> ( séparez les par des virgules )</p>
<p><input type="submit" name="submit" value="Envoyer" onclick="" /></p>
</form>

<p><?php echo isset($output) ? $output : '' ; ?></p>

En espérant que vous pourrez m'aider

Aucune réponse