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?
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.
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>