0

我希望它只是我疲倦的眼睛错过了一些东西,而一双新鲜的眼球可能会抓住我错过的东西。

我有一个自定义分类法,其中有一个“residential_project_types”的slug,它被分配给一个自定义帖子类型的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; }?>
4

2 回答 2

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' => trueget_terms()

我在这里假设您的 ACF 自定义字段已附加到该术语,因此我们需要将$term->term_id其作为第二个参数传递给the_field()- 但我不确定您对这些字段做了什么。希望这足以帮助您取得进步。

祝你好运!

于 2017-04-25T19:43:48.820 回答
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; ?>
于 2017-04-25T20:52:59.997 回答