私は創世記に子供のテーマを使っています。カスタム投稿タイプとカスタム分類法を設定しました。また、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();
あなたのコードでネストしたループを使用しています。 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();