Mon shortcode simple fonctionne sur toutes les pages, à l'exception de la page d'accueil (statique) dans Wordpress 2016 Theme. Tout le contenu que je peux lire à l'exception du titre de l'article. Il revient vide. Je veux afficher les messages sur la page d'accueil avec les titres. Tout fonctionne. Cependant, le titre est vide. Merci,
//Recent post shortcode single
function mfbs_recent_post1x1($atts){
$q = new WP_Query(
array( 'orderby' => 'date', 'posts_per_page' => '4')
);
$list = '<div class="row mfbs1x1">';
while($q->have_posts()) : $q->the_post();
$title = $q->the_post()->post_title;
$list .= '<div class="small-12 medium-12 large-12 columns">';
$list .= $title;
$list .= '<a href="' . get_permalink() . '">' ;
$list .= get_the_post_thumbnail($the_post->ID , 'medium', array( 'class' => 'alignleft' ) );
$list .= '<br>' . get_the_title() . '</a>' . '<br>' . get_the_excerpt() . '</div>';
endwhile;
wp_reset_query();
return $list . '</div>';
}
add_shortcode('foodrecentpost1x1', 'mfbs_recent_post1x1');
Vous utilisez une requête dans une requête à ce stade. Pour cette raison, vous devez définir global $post
en haut de votre fichier de fonctions afin qu'il ait quelque chose à affecter dans the_post()
. Maintenant que vous avez un objet $post
, vous pouvez remplacer tout votre code de test par $post->attribute
:
//Recent post shortcode single
function mfbs_recent_post1x1($atts){
global $post;
$q = new WP_Query(
array( 'orderby' => 'date', 'posts_per_page' => '4')
);
$list = '<div class="row mfbs1x1">';
while($q->have_posts()) : $q->the_post();
$title = $post->post_title;
$list .= '<div class="small-12 medium-12 large-12 columns">';
$list .= $title;
$list .= '<a href="' . get_permalink() . '">' ;
$list .= get_the_post_thumbnail($post->ID , 'medium', array( 'class' => 'alignleft' ) );
$list .= '<br>' . get_the_title() . '</a>' . '<br>' . get_the_excerpt() . '</div>';
endwhile;
wp_reset_query();
return $list . '</div>';
}
add_shortcode('foodrecentpost1x1', 'mfbs_recent_post1x1');