J'ai ce shortcode simple pour afficher les derniers articles avec son titre et excepté:
add_shortcode('latest3', function(){
$recent_posts = wp_get_recent_posts(
array(
'numberposts' => 3,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'post_status' => 'publish'
), ARRAY_A);
$output = '<h2>Latest posts</h2>';
foreach ( $recent_posts as $recent ) {
$output .= '<h3>'.$recent["post_title"].'</h3>';
$output .= $recent["post_excerpt"];
}
return $output;
});
Mais pour une raison quelconque, la sortie de l'extrait est vide. print_r($recents)
indique qu'il existe effectivement une clé de tableau appelée post_excerpt
, mais qu'elle est toujours affichée vide.
La valeur post_excerpt
est vide car vous n'avez aucun extrait explicite pour vos publications. Bien que the_excerpt()
génère un extrait du contenu des publications si celui-ci est vide, la fonction wp_get_recent_posts()
, qui est essentiellement un wrapper pour get_posts()
, ne le fait pas.
Ce code peut fonctionner. J'utilise le setup_postdata
pour créer un objet post
similaire à celui de la fonction the_post()
. Vous pouvez donc maintenant utiliser les fonctions que vous avez dans une boucle.
$recent_posts = wp_get_recent_posts(
array(
'numberposts' => 3,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'post_status' => 'publish'
), OBJECT);
$output = '<h2>Latest posts</h2>';
foreach ( $recent_posts as $recent ) {
setup_postdata($recent);
$output .= '<h3>'.get_the_title().'</h3>';
$output .= get_the_excerpt();
}
wp_reset_postdata();
return $output;