web-dev-qa-db-fra.com

Comment créer un shortcode pour afficher les 2 derniers messages

Je voudrais créer un shortcode qui affiche les 3 derniers messages sur n'importe quelle page ....

Il devrait être aménagé comme ça

Titre

Extraits ... Lire plus

J'ai ajouté ce code dans function.php

function my_recent_post()
 {
  global $post;

  $html = "";

  $my_query = new WP_Query( array(
       'post_type' => 'post',
       'posts_per_page' => 2
  ));

  if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();

       $html .= "<h2>" . get_the_title() . " </h2>";
       $html .= "<p>" . get_the_excerpt() . "</p>";
       $html .= "<a href=\"" . get_permalink() . "\" class=\"button\">Read more</a>";

  endwhile; endif;

  return $html;
 }
 add_shortcode( 'recent', 'my_recent_post' );

et ça marche, sauf que maintenant ma page d'accueil montre les 2 posts que l'on souhaite dans une division, mais le problème est en dessous du contenu, c'est-à-dire en dessous de la division avec le shortcode, il montre l'intégralité du 2e article (voir image).

Aucune suggestion?

the problem

2
user54779

Ajoutez wp_reset_postdata() après votre boucle while:

        endwhile;
    wp_reset_postdata();
endif;

Ainsi, après l’exécution de votre code court, la publication actuelle / actuelle est restaurée, de sorte que les balises de modèle affichent les bonnes données.

2
TheDeadMedic

enter code here texte fort pouvez-vous s'il vous plaît essayer ceci

function my_recent_post()
 {
  global $post;

  $html = "";

  $my_query = new WP_Query( array(
       'post_type' => 'post',
       'posts_per_page' => 2
  ));

  if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();

  $html.= get_template_part( 'content', 'excerpt' );


  endwhile; endif;

  return $html;
 }
 add_shortcode( 'recent', 'my_recent_post' ); ?>

 **<h1>create a php file content-excerpt.php and place in your theme</h1>

code of that file is**


<article id="post-<?php the_ID(); ?>">  

    <header class="entry-header">
        <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
        </div>
    </header>

    <div class="entry-excerpt">
        <?php the_excerpt(); ?>
    </div>
    <a href="<?php get_permalink() ?>" class="button">Read more</a>
</article>
0
TBI Infotech