Foreach 循环遍历 cpt 类别以使用 ACF 值

Posted

技术标签:

【中文标题】Foreach 循环遍历 cpt 类别以使用 ACF 值【英文标题】:Foreach loop through cpt categories to use ACF values 【发布时间】:2021-02-24 05:53:19 【问题描述】:

我正在循环浏览我的 CPT 类别,我想在每个循环中使用我的 ACF 字段。

 <div id="response">
         <?php
         $args = array(
          'post_type'  => 'segments-overview',
           'orderby' => 'date', // we will sort posts by date
           'posts_per_page' => -1
        );



        $query = new WP_Query( $args );
        $all_terms = [];
        if( $query->have_posts() ) :
          while( $query->have_posts() ): $query->the_post();

          $terms = get_the_terms(get_the_ID(), 'category-segments-overview');
          foreach($terms as $term) $all_terms[$term->term_id] = $term;

          endwhile;

          foreach($terms as $term):
            ?>

          <div class="segments-card">
            <div class="img">image</div>
            <div class="content">
                <div class="title"><?php echo $term->name; ?></div>
                
                // ACF field
                <?php echo the_field('product', $term->taxonomy) ; ?>

                <a class="button transparent" href="/segments/<?php echo $term->slug; ?>">
                <?php echo __('View All','axia'); ?>
              </a>
            </div>
            </div>
          </div>

        <?php endforeach;

          wp_reset_postdata();
        else :
          ?>
          <div class="no-posts-found">
            <h2>There were no items found</h2>
              <h3>Please try a different search</h3>
          </div>
          <?php
        endif;
          ?>
    </div>

谁能告诉我如何在 foreach 循环中检索我的“产品”字段的值。 目前我没有收到任何错误,但我也没有收到任何价值。

请帮忙。

【问题讨论】:

echo get_field('product', $term-&gt;taxonomy . '_' . $term-&gt;term_id); 下面的答案是一个实际的答案,这个人用时间帮助你 - 我刚刚抛出了 1 个可能的答案 - 给他工作所需的学分 - 很高兴我能提供帮助 - 我我真的不应该在评论中回答问题:-D 【参考方案1】:

您必须了解有关分类术语字段的文档: https://www.advancedcustomfields.com/resources/adding-fields-taxonomy-term/

在你的情况下,你可以替换

echo the_field('product', $term->taxonomy);

通过(3种可能性)

echo the_field('product', $term);
// or
echo the_field('product', $term->taxonomy . '_' . $term->term_id);
// or
echo the_field('product',  'term_' . $term->term_id);

如何从特定术语加载字段?

从 acf 加载的字段基本上是:get_field('key', $post_id)

对于分类术语,有 3 种不同样式的 $post_id 可用,如下所列。 (这是来自 acf 文档)

+----------------+----------------------------+-----------------------------------------------------------------------------+
| Example        | Format                     | Description                                                                 |
+----------------+----------------------------+-----------------------------------------------------------------------------+
| 'category_123' | $taxonomy . '_' . $term_id | A string containing the taxonomy name and term ID                           |
+----------------+----------------------------+-----------------------------------------------------------------------------+
| 'term_123'     | 'term_' . $term_id         | 'term_' . $term_id                                                          |
|                |                            | A string containing the word ‘term’ and term ID. Added in version 5.5.0     |
+----------------+----------------------------+-----------------------------------------------------------------------------+
| WP_Term        | $term                      | A term object. You can get a term object via many of WP’s functions such as |
|                |                            |                                                                             |
|                |                            | get_term()                                                                  |
+----------------+----------------------------+-----------------------------------------------------------------------------+

【讨论】:

投我一票 - 抱歉“在评论中回答”

以上是关于Foreach 循环遍历 cpt 类别以使用 ACF 值的主要内容,如果未能解决你的问题,请参考以下文章

foreach —(遍历数组或循环中的字符,以获取信息)

如何用foreach做数组个数的遍历

在循环内使用 ACF 更改类别名称

jquery foreach和each的区别

PHP中如何使用foreach结构遍历数组?

foreach能遍历啥