我有一个建筑项目的自定义帖子类型,其中包括一个ACF转发器,其中包含图像、标题和描述。此转发器在单个项目(post)页面上变成幻灯片。
每个项目也被分配到一个或多个类别(住房、医疗等)。在这些项目的类别页面上,我想下拉每个项目的第一个图像,用作缩略图。
类别模板中的代码如下所示:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<pre><?php print_r( get_field(\'images\') ) ?> </pre><!-- for debugging -->
<div class="col-xs-4 col-md-2">
<figure class="show-caption">
<?php if( have_rows(\'images\') ): the_row(); ?>
<?php $photo = get_sub_field(\'photo\'); $filename = $photo[\'sizes\'][\'large\']; ?>
<a href="<?php the_permalink() ?>" class="thumbnail"><img src="<?= $filename ?>" width="250" height="166" alt=""></a>
<?php endwhile; endif; ?>
</figure>
</div>
<?php endif; ?>
问题是,
have_rows(\'images\')
在类别模板页面上返回false,但在项目页面上返回true。当我
print_r( get_field(\'images\') )
在这两个页面上,我都在项目页面上获得了完整的图像数组,但在类别页面上只有一个整数(等于数组大小)。
如何在分类页面上查看完整的图像阵列?
最合适的回答,由SO网友:Blazemonger 整理而成
终于在上找到此解决方案the ACF support forums. 我所要做的就是把它添加到我的函数中。自定义主题中的php文件:
//Include CPT In Categories Pages
function namespace_add_custom_types( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars[\'suppress_filters\'] ) ) {
$post_types = get_post_types( \'\', \'names\' );
$query->set( \'post_type\', $post_types);
return $query;
}
}
add_filter( \'pre_get_posts\', \'namespace_add_custom_types\');