web-dev-qa-db-fra.com

Comment créer un shortcode pour afficher une publication personnalisée dans une page ou une publication régulière?

J'aimerais créer un shortcode qui extraira des informations pour un message personnalisé et l'affichera dans une page ou un message normal.

Cas d'utilisation spécifique: j'ai un type de message personnalisé "Film" pour un site Web de festival de film. Les films sont affichés avec leur propre single-film.php, mais les propriétaires du site veulent parfois écrire un post ou une page qui mentionne un film en particulier, et souhaitent pouvoir extraire des extraits d'informations déjà saisies (par exemple: , Nom du film, informations de réservation, etc). Cela irait dans une "boîte" au bas de l'article, et j'aimerais leur faciliter la tâche en leur fournissant une sorte de code abrégé.

Comment pourrais-je m'y prendre? Des ressources/tutoriels recommandés pour me mettre sur la bonne voie? Quels pièges devrais-je connaître (par exemple, plusieurs boucles dans un message)?

1
Amanda

Il existe d'excellents tutoriels sur les codes courts sur le Web et quelques bons exemples ici

mais juste pour vous aider à démarrer:

add_shortcode('film_q', 'film_shortcode_query');
function film_shortcode_query($atts, $content){
  extract(shortcode_atts(array( // a few default values
   'posts_per_page' => '1',
   'post_type' => 'film',
   'caller_get_posts' => 1)
   , $atts));

  global $post;

  $posts = new WP_Query($atts);
  $output = '';
    if ($posts->have_posts())
        while ($posts->have_posts()):
            $posts->the_post();
            $out = '<div class="film_box">
                <h4>Film Name: <a href="'.get_permalink().'" title="' . get_the_title() . '">'.get_the_title() .'</a></h4>
                <p class="Film_desc">'.get_the_content().'</p>';
                // add here more...
            $out .='</div>';
    /* these arguments will be available from inside $content
        get_permalink()  
        get_the_content()
        get_the_category_list(', ')
        get_the_title()
        and custom fields
        get_post_meta($post->ID, 'field_name', true);
    */
    endwhile;
  else
    return; // no posts found

  wp_reset_query();
  return html_entity_decode($out);
}

et pour l'utiliser entrez dans n'importe quel post/page:

[film_q p=FILM_POST_ID]

remplacez simplement FILM_POST_ID par l'ID de publication de film réel.

J'espère que cela t'aides

5
Bainternet

Essayez de commencer par ce tutoriel .

Dans la fonction de rappel, effectuez un custom_query (ou utilisez get_post ) pour la publication et extrayez uniquement les valeurs pertinentes pour vous. (I.e: titre, extrait ...)

exemple shorcode

[film id=10]

Utilisez id dans votre fonction pour récupérer le contenu du film.

0
keatch