Wordpress Taxonomy Archive BUG

时间:2017-04-25 19:17:00

标签: wordpress custom-taxonomy taxonomy-terms

我希望只是我疲惫的眼睛会丢失一些东西,一双新眼球可能会抓住我所缺少的东西。

我有一个自定义分类,其中有一个'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; }?>

2 个答案:

答案 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; ?>