J'essaie d'ajouter une classe au premier message dans un WP_Query personnalisé.
Je peux ajouter une classe au premier message de la boucle WordPress standard en utilisant;
add_filter( 'post_class', 'featured_classes' );
function featured_classes( $classes ) {
global $wp_query;
if( 0 == $wp_query->current_post )
$classes[] = 'first';
return $classes;
}
Toutefois, lorsque je remplace $wp_query
par $featured_posts
(nom de la requête personnalisée), la classe first
est appliquée à toutes les publications. Je ne peux pas comprendre pourquoi cela pourrait se produire.
Ci-dessous, mon code complet.
//Add featured post grid
add_action( 'genesis_after_header', 'post_grid' );
function post_grid() {
// Featured post Loop
$args = array (
'post_type' => 'blog',
'category_name' => 'Featured',
);
$featured_posts = new WP_Query( $args );
if ( $featured_posts->have_posts() ) {
while ( $featured_posts->have_posts() ) {
$featured_posts->the_post(); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a> </div>
<?php }
} else {
echo "Sorry, no featured posts found";
}
wp_reset_postdata();
}
//Add Post Class Filter
add_filter( 'post_class', 'featured_classes' );
function featured_classes( $classes ) {
global $featured_posts;
if( 0 == $featured_posts->current_post )
$classes[] = 'first';
return $classes;
}
genesis();
Est-ce que quelqu'un peut-il me montrer la bonne direction?
Je pense que vous pouvez simplement utiliser:
post_class( 0 === $featured_posts->current_post ? 'first' : '' );
pour ajouter la première classe directement dans votre code de modèle, au lieu d’appliquer le filtre post_class
.