web-dev-qa-db-de.com

Fügen Sie mithilfe des Filters post_class eine Klasse zum ersten Beitrag in einer benutzerdefinierten Schleife hinzu

Ich versuche, dem ersten Beitrag in einer benutzerdefinierten WP_Query eine Klasse hinzuzufügen.

Ich kann dem ersten Beitrag der Standard-WordPress-Schleife mit eine Klasse hinzufügen.

add_filter( 'post_class', 'featured_classes' );
function featured_classes( $classes ) {
global $wp_query;
if( 0 == $wp_query->current_post )
    $classes[] = 'first';
    return $classes;
}

Wenn ich jedoch $wp_query in $featured_posts ändere (Name der benutzerdefinierten Abfrage), wird die Klasse first auf alle Posts angewendet. Ich kann nicht herausfinden, warum das passieren könnte.

Unten ist mein Code vollständig;

//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();

Kann mich jemand in die richtige Richtung weisen?

1
tmgale12

Ich denke, Sie können einfach verwenden:

post_class( 0 === $featured_posts->current_post ? 'first' : '' );

um die erste Klasse direkt in Ihren Vorlagencode einzufügen, anstatt den post_class-Filter anzuwenden.

0
birgire