Si quelqu'un peut aider, ce serait génial.
J'ai trouvé un extrait de code que j'ai utilisé et qui correspond assez bien à ce que je veux qu'il fasse: il répertorie les sous-pages du parent, ajoute une vignette s'il en existe un et un extrait personnalisé.
Cependant, le problème est que je ne peux pas ajouter un <?php post_class(); ?>
individuel à un div à l'intérieur de la boucle, en utilisant la classe du parent et en le répétant pour les sous-pages.
<?php
$child_pages = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_parent = ".$post->ID." AND post_type = 'page' ORDER BY menu_order", 'OBJECT'); ?>
<?php if ( $child_pages ) : foreach ( $child_pages as $pageChild ) : setup_postdata( $pageChild ); ?>
<?php
// Must be inside a loop.
if ( has_post_thumbnail($pageChild->ID) ) {
get_the_post_thumbnail('page-thumb-mine');
}
// else {
// echo '<img src="' . get_bloginfo( 'stylesheet_directory' ) . '/images/icon-cropped.png" />';
// }
?>
<div <?php post_class(); ?>>
<?php echo get_the_post_thumbnail($pageChild->ID, 'page-thumb-mine'); ?>
<h3><a href="<?php echo get_permalink($pageChild->ID); ?>" rel="bookmark" title="<?php echo $pageChild->post_title; ?>"><?php echo $pageChild->post_title; ?></a></h3>
<?php echo excerpt(28); ?>
</div>
</div>
<?php endforeach; endif;
?>
Toute aide serait appréciée!
Merci
Andy
Je suis assez certain que le problème est que certaines balises de modèle reposent sur la variable globale $post
. Utiliser setup_postdata()
comme vous êtes maintenant ne modifiera pas $post
. Si vous remplacez toutes les instances de $pageChild
par $post
, tout devrait fonctionne.
Cependant, je vous recommande fortement d'utiliser la classe WP_Query et de configurer vos données de publication avec 'the_post ()' à la place. Voici l'équivalent de votre code, mais avec WP_Query:
<?php
$args = array(
'post_parent' => $post->ID,
'post_type' => 'page',
'orderby' => 'menu_order'
);
$child_query = new WP_Query( $args );
?>
<?php while ( $child_query->have_posts() ) : $child_query->the_post(); ?>
<div <?php post_class(); ?>>
<?php
if ( has_post_thumbnail() ) {
the_post_thumbnail('page-thumb-mine');
}
?>
<h3><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php the_excerpt(); ?>
</div>
<?php endwhile; ?>
<?php
wp_reset_postdata();
Note: J'ai nettoyé quelques autres choses dans votre code posté. De plus, j'ai échangé votre fonction excerpt()
personnalisée avec the_excerpt()
afin que l'exemple de code fonctionne pour tous ceux qui souhaitent le copier/coller.
Références:
https://codex.wordpress.org/Class_Reference/WP_Query
https://codex.wordpress.org/Function_Reference/setup_postdata