web-dev-qa-db-ja.com

Wordpressの創世記カスタム分類アーカイブは各ポストの3回の繰り返しを示しています

私は創世記に子供のテーマを使っています。カスタム投稿タイプとカスタム分類法を設定しました。また、CPTの各ページにギャラリーを配置するためにAdvanced Custom Fieldsを使用しています。分類アーカイブページでは、各ギャラリーからの単一の画像をサムネイルとして表示し、投稿にリンクします。カスタム分類法用の新しいテンプレートを使用してこれを設定しましたが、すべての投稿を表示するように 'numberposts' => -1を設定すると、各投稿/サムネイルを8回繰り返すことになります。 'numberposts' => 1に設定すると、各投稿/サムネイルが3回繰り返されます。各投稿から1つのサムネイルだけを表示する方法

これがワードプレスの問題であるかどうかはわかりませんが、カスタムループの設定方法と関係があるはずです。

<?php
//* Template Name: Press Release; Archive

remove_action ('genesis_loop', 'genesis_do_loop'); // Remove the standard loop 
add_action ('genesis_after_loop', 'collection_categories'); // add custom loop
function collection_categories(){

$terms = get_terms('collection_categories');
foreach($terms as $term) {
$posts = get_posts(array(
        'post_type' => 'collections',
        'tax_query' => array(
            array(
                'taxonomy' => 'collection_categories',
                'field' => 'slug',
                'terms' => $term->slug
            )
        ),
        'numberposts' => 1
    ));

foreach($posts as $post) {

//* One image from gallery on archive pages

        if ( have_posts() ) : 
while ( have_posts() ) : the_post();

    $images = get_field('gallery'); 
    $image_1 = $images[0];
    $link = get_the_permalink();

?>

<a href="<?php echo $link ?>"><img src="<?php echo $image_1['sizes']    ['thumbnail']; ?>" alt="<?php echo $image_1['alt']; ?>" /></a>
<?php

        endwhile;
        endif;
}
}
}
genesis();
1
apol

あなたのコードでネストしたループを使用しています。 foreachループのみを使用し、投稿IDをget_field()に渡す必要があります。これが例です:

$terms = get_terms( 
    [ 
        'taxonomy' => 'collection_categories', 
        'orderby'  => 'name', 
        'order'    => 'DESC'
    ] 
);

// Rest of the code  here 

foreach ( $posts as $post ) {

    //* One image from gallery on archive pages
    $images  = get_field( 'gallery', $post->ID ); 
    $image_1 = $images[0];

    ?>

    <a href="<?php the_permalink( $post->ID ); ?>">
        <img src="<?php echo $image_1['sizes']['thumbnail']; ?>" alt="<?php echo $image_1['alt']; ?>" />
    </a><?php

}

// Don't forget to reset the postdata
wp_reset_postdata();
2
Jack Johansson