J'ai créé un modèle de page et l'objectif est de créer une boucle qui récupère tous les messages par nom de catégorie. Le nom de la catégorie est transmis à partir du slug du nom de la page. Je n'ai pas réussi à obtenir que cela fonctionne entièrement.
EDITVoici ma fonction pour cette boucle (mise à jour à partir des réponses):
global $post;
$page_slug = $post->post_name;
$category_query = new WP_Query(array(
'category_name' => $page_slug
));
if ($category_query->have_posts()) :
while ($category_query->have_posts()) :
$category_query->the_post();
$output = '<h2 class="entry-title" itemprop="headline"><a href="'.get_the_permalink().'">'.get_the_title().'</a></h2>';
$output .= '<div class="entry-content" itemprop="text">'.get_the_content().'</div>';
endwhile;
else :
$output = '<h3>No posts found under "'.$page_slug.'"</h3>';
endif;
wp_reset_postdata();
echo $output;
J'ai foiré quelque part, car tout ce que j'ai est une page blanche. Des suggestions sur la façon de réparer ma boucle pour accomplir ce que je cherche?
endwhile;
.get_*
pour le titre, le lien permanent et le contenu.$page_slug
ici et $post_slug
ici. Il suffit d'utiliser une seule et même variable. ;)while
entre crochets.Voir le code mis à jour:
global $post;
$page_slug = $post->post_name;
$args = array(
'category_name' => $page_slug
);
$category_query = new WP_Query($args);
if ($category_query->have_posts()) {
while ($category_query->have_posts()) {
$category_query->the_post();
?>
<h2 class="entry-title" itemprop="headline"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="entry-content" itemprop="text"><?php the_content(); ?></div>
<?php
}
} else {
?>
<h3>No posts found under "<?php echo $page_slug; ?>"</h3>
<?php
}
wp_reset_postdata();
Je peux voir quelques problèmes dans votre code.
La cause principale est que votre boucle While ne se ferme pas, fermez-la avant le else:
. C'est la raison pour laquelle vous obtenez un écran vide. Vous devriez activer les erreurs php pour éviter un écran vide pour les erreurs fatales futures.
utilisez get_the_title()
au lieu de the_title()
et get_the_content()
au lieu de the_content()