J'ai essayé de reproduire des extraits dans wp_list_pages
avec le code ci-dessous. Cela fonctionne, mais seulement pour l'une des pages enfants. Comment pourrais-je faire écho à l'extrait et au titre de chaque page enfant?
<?php
$children = wp_list_pages('title_li=&depth=1&child_of='.$post->ID.'&echo=0');
if ($children) { ?>
<h2>
<?php echo $children; ?>
<?php the_excerpt(); ?>
</h2>
<?php } ?>
Si vous souhaitez utiliser tous les filtres astucieux pour le titre et les extraits/contenu (et pourquoi ne voulez-vous pas cela?), Vous devez parcourir une requête personnalisée au lieu d'utiliser get_pages
et le contenu brut des pages:
<?php
$args = array(
'post_type' => 'page',
'post_status' => 'publish',
'posts_per_page' => -1,
'post_parent' => $post->ID,
);
$query = new WP_Query($args);
while ($query->have_posts()) {
$query->the_post();
?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php
the_excerpt();
}
wp_reset_postdata();
?>
wp_list_pages()
est pour afficher une liste de pages. On dirait que vous voulez faire plus avec cela.
Au lieu de cela, vous devriez utiliser get_pages()
avec renvoie un tableau de données sur les pages, ce qui signifie que vous disposez de beaucoup plus de souplesse. Voici un exemple de code:
$children = get_pages(array('child_of' => $post->ID));
foreach ($children as $child) { ?>
<h2><?php echo $child->post_title; ?></h2>
<p><?php echo $child->post_excerpt; ?></p>
<li><a href="<?php echo get_permalink($child->ID); ?>"><?php echo $child->post_title; ?></a></li>
<?php } ?>
Vous ne pouvez pas faire cela comme vous le tentez. Tout le balisage est généré par wp_list_pages()
. Vous ne pouvez pas "insérer" un contenu comme ça.
Vous pouvez appliquer un rappel au hook wp_list_pages
, mais vous aurez besoin de regex délicats pour le faire.
Je pense que votre meilleure option est de passer un Walker personnalisé à wp_list_pages()
. Quelque chose comme ça:
class My_Page_Walker extends Walker_Page {
function end_el( &$output, $page, $depth = 0, $args = array() ) {
$output .= apply_filters('the_excerpt',$page->post_excerpt);
// or generate the excerpt from post_content
// $output .= apply_filters('the_content',wp_trim_words($page->post_content));
$output .= '</li>';
}
}
$args = array(
'post_status'=> 'publish',
'walker' => new My_Page_Walker
);
wp_list_pages( $args );