我在《创世纪》中使用了儿童主题。我已经设置了一个自定义帖子类型和一个自定义分类法,并且我正在使用高级自定义字段在CPT的每个页面上放置一个库。在分类法归档页面上,我想以缩略图的形式显示每个库中的单个图像,并链接到帖子。我已经使用自定义分类法的新模板成功地设置了这一点,但如果我将“numberposts”=>-1设置为显示所有帖子,则每个帖子/缩略图会重复八次。如果我将其设置为“numberposts”=>1,则每个帖子/缩略图会重复3次。如何仅显示每篇文章的一个缩略图?
我不确定这是否是wordpress的问题,但我认为这一定与我如何设置自定义循环有关?
<?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();
最合适的回答,由SO网友:Johansson 整理而成
您正在代码中使用嵌套循环。您应该只使用foreach
循环,并将post 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();