web-dev-qa-db-fra.com

Post_class

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?

1
tmgale12

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.

0
birgire