web-dev-qa-db-ja.com

$ WP_Query:最初の投稿にのみ抜粋を表示する方法

$featured_queryがすべての投稿を最初の投稿として扱うのはなぜですか?以下の ここにあるPieterのアドバイス 、および同様の投稿、内蔵のループカウンターを使って最初の投稿にのみ抜粋を表示することはできませんでした。

front-page.phpには注目のプロジェクトセクションがあり、テンプレート部分を呼び出します。

<section id="featured">

    <?php // Start custom loop
        $args = array( 
                'post_type' => 'project',
                'posts_per_page' => 5,
                );
        $featured_query = new WP_Query( $args ); 

        while ( $featured_query->have_posts() ) : $featured_query->the_post(); 

            get_template_part( 'template-parts/content-archive', 'project' );

        endwhile; 
        wp_reset_postdata(); // Reset loop data
    ?>

</section>

content-archive-project.phpは次のようになります。

<article class="project">

<?php if ( has_post_thumbnail() ) { 
    the_post_thumbnail( 'post-thumbnail', 
        array( 'class' => 'featured' )); 
        } 
?>

    <header class="entry-header">

        <?php the_title( '<h2><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' ); ?>
        <p><?php
        $tagline  = get_post_meta( get_the_ID(), 'aj_post_tagline', true );
        echo esc_html( $tagline );
        ?></p>

    </header>

<?php if ( $featured_query->current_post == 0 ) { ?>

    <section class="entry-content">
           <?php the_excerpt(); ?>
    </section>

<?php } ?>

</article>
1
the-first-man

コンテンツ部分から引き出します。それが一番簡単でしょう。

<section id="featured">

    <?php // Start custom loop
        $args = array( 
                'post_type' => 'project',
                'posts_per_page' => 5,
                );
        $featured_query = new WP_Query( $args ); 

        while ( $featured_query->have_posts() ) : $featured_query->the_post(); 
    ?>
    <article class="project">

    <?php 
        if ( has_post_thumbnail() ) { 
            the_post_thumbnail( 'post-thumbnail', 
            array( 'class' => 'featured' )); 
        } 
    ?>

    <header class="entry-header">

        <?php the_title( '<h2><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' ); ?>
        <p><?php
        $tagline  = get_post_meta( get_the_ID(), 'aj_post_tagline', true );
        echo esc_html( $tagline );
        ?></p>

    </header>

    <?php if ( $featured_query->current_post == 0 ) { ?>

        <section class="entry-content">
           <?php the_excerpt(); ?>
        </section>

    <?php } ?>

    </article>

    <php
        endwhile; 
        wp_reset_postdata(); // Reset loop data
    ?>

</section>

もう1つの選択肢は、この行を試すことです。

include( locate_template( 'template-parts/content-archive-project.php', false, false ) ); 

の代わりに :

get_template_part( 'template-parts/content-archive', 'project' );

しかし、あなたは私がしなかったようにそれをテストするべきです。

0
rudtek