カスタムWP_Queryの最初の投稿にクラスを追加しようとしています。
標準のWordPressループの最初の投稿にクラスを追加することができます。
add_filter( 'post_class', 'featured_classes' );
function featured_classes( $classes ) {
global $wp_query;
if( 0 == $wp_query->current_post )
$classes[] = 'first';
return $classes;
}
ただし、$wp_query
を$featured_posts
(カスタムクエリの名前)に変更すると、クラスfirst
がすべての投稿に適用されます。私はなぜこれが起こっているのかわからない。
以下は私のコードの全部です。
//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();
誰かが私を正しい方向に向けることができますか?
私はあなたが単に使用できると思います:
post_class( 0 === $featured_posts->current_post ? 'first' : '' );
post_class
フィルタを適用する代わりに、最初のクラスをテンプレートコード内に直接追加します。