我希望只是我疲惫的眼睛会丢失一些东西,一双新眼球可能会抓住我所缺少的东西。
我有一个自定义分类,其中有一个'residential_project_types',它被分配给自定义帖子类型的residential_projects。我想显示分类中的所有术语,输出术语名称和链接。
它的工作......
它不是为每个术语显示单个术语,而是为术语中包含的每个帖子显示一个术语。这当然是创造重复。此外,HTML无法正常显示,导致元素重叠。
我的预感是因为循环搞砸了......?虽然无法弄清楚。任何和所有帮助非常感谢!
这是一个破碎/错误页面的链接: http://desarch.robertrhu.net/residential/
这是我写的代码:
<?php
$terms = get_terms( array(
'taxonomy' => 'residential_project_types',
'orderby' => 'count',
'hide_empty' => false,
'fields' => 'all'
) );
?>
<?php
foreach( $terms as $term ) {
$args = array(
'post_type' => 'residential_projects',
'residential_project_types' => $term->slug
);
$term_link = get_term_link( $term );
$query = new WP_Query( $args );
if ( $query->have_posts() ) :
/* Start the Loop */
while ( $query->have_posts() ) : $query->the_post(); ?>
<a class="property-thumb-link"
href="<?php echo $term_link; ?>">
<div class="property-thumb column medium-6 small-12">
<img src="<?php the_field('category_image', $term); ?>"
alt="<?php the_field ('category_image_alt', $term); ?>" />
<div class="property-thumb-title">
<h2>
<?php echo $term->name; ?>
</h2>
</div>
</div>
</a>
<?php wp_reset_postdata();
endwhile;
endif; }?>
答案 0 :(得分:0)
要显示自定义分类中的术语,我认为您不应该使用WP_Query()
- 这是用于循环播放帖子。
相反,你可以使用get_terms()
函数获取你的术语对象,循环遍历它们,如下所示:
<?php
$terms = get_terms( array(
'taxonomy' => 'residential_project_types',
'hide_empty' => false,
) );
// Temp output of terms so you can see what you're working with
// var_dump($terms);
// loop through all terms
foreach( $terms as $term ) {
if( 0 === $term->count ) {
// This $term has no posts attached to it - you may want to treat it differently.
echo $term->name;
} elseif( $term->count > 0 ) {
// Build your term markup for terms that have posts attached
$term_link = get_term_link( $term );
?>
<a class="property-thumb-link" href="<?php echo $term_link; ?>">
<div class="property-thumb column medium-6 small-12">
<img src="<?php the_field('category_image', $term->term_id); ?>" alt="<?php the_field ('category_image_alt', $term->term_id); ?>" />
<div class="property-thumb-title">
<h2><?php echo $term->name; ?></h2>
</div>
</div>
</a>
<?php
}
}
您还可以通过在'hide_empty' => true
中设置get_terms()
来隐藏空条款 - 然后您可以删除检查空条款的条件。
我假设您的ACF自定义字段已附加到该字词,因此我们需要将$term->term_id
作为第二个参数传递给the_field()
- 但我不确定您是什么重新做这些领域。希望这足以帮助您取得进步。
答案 1 :(得分:0)
我非常复杂化了这一点。这是我的答案......
<?php $terms = get_terms( array(
'taxonomy' => 'residential_project_types',
'orderby' => 'count',
'hide_empty' => true
) );
foreach( $terms as $term ) :
?>
<a class="property-thumb-link"
href="<?php echo get_term_link( $term ); ?>">
<div class="property-thumb column medium-6 small-12">
<img src="<?php the_field('category_image', $term); ?>"
alt="<?php the_field ('category_image_alt', $term); ?>" />
<div class="property-thumb-title">
<h2>
<?php echo $term->name; ?>
</h2>
</div>
</div>
</a>
<?php endforeach; ?>