循环访问ACF分类并输出关联的帖子

时间:2019-07-03 作者:user108167

我有一个页面模板,可以循环浏览所有现有的帖子类别,并为每个类别输出5个相关帖子。我想更改它,使其只输出我在特定页面上的ACF分类字段中选择的类别。

我已经设置了页面,并向其中添加了ACF分类字段,但是我无法确定如何使原始循环仅使用此处选择的分类。实现这一目标的最佳方式是什么?

我试着通过get_field(\'taxonomy_field_name\') 但是,这似乎不起作用

以下是我如何循环浏览类别/帖子:

<?php 
/* Loop through Categories and Display Posts */
    $post_type = \'post\';
    // Get all the taxonomies for this post type
    $taxonomies = get_object_taxonomies( array( \'post_type\' => $post_type ) );
    foreach( $taxonomies as $taxonomy ) :
      $terms = get_terms( $taxonomy );
      foreach( $terms as $term ) :
          $args = array(
                  \'post_type\' => $post_type,
                  \'posts_per_page\' => 5,  //show all posts
                  \'tax_query\' => array(
                      array(
                          \'taxonomy\' => $taxonomy,
                          \'field\' => \'slug\',
                          \'terms\' => $term->slug,
                      )
                  )
              );
          $posts = new WP_Query($args); ?>
          <div class="category-container-row">
          <?php if( $posts->have_posts() ): ?> 
            <div class="category-title">
                <h2>
                    <?php echo \'<a href="\' . get_site_url() . \'/\' . $term->slug . \'">\' . $term->name . \'</a>\';?>
                </h2>
            </div>
            <div class="post-listing-row carousel-container">
            <?php while( $posts->have_posts() ) : $posts->the_post(); ?>
            <article class="single-post">
                  <h3>
                  <a href="<?php echo get_permalink($post->ID); ?>"><?php  echo get_the_title(); ?></a>
                  </h3>
              </article>
            <?php endwhile; endif; ?>
          </div>
        </div>
      <?php endforeach;
    endforeach; ?>

1 个回复
SO网友:Jacob Peattie

ACF“分类法”字段允许您从分类法中选择术语,而不是从分类法本身中选择术语。因此,如果希望在代码中使用该字段中的选择,则需要:

移除get_object_taxonomies() 行和后续行foreach. 您正在遍历术语,而不是分类法,请确保分类法字段设置为返回术语ID。作为主键,这可能比按术语段塞查询帖子更快get_terms() 使用get_field() 用于自定义字段。这就是你将要循环的内容tax_query 使用term_id 作为字段,以匹配#2中设置的字段输出

$post_type = \'post\';
$taxonomy  = \'taxonomy_name\';
$terms     = get_field( \'taxonomy_field_name\' );

foreach( $terms as $term ) :
    $args = array(
        \'post_type\'      => $post_type,
        \'posts_per_page\' => 5,
        \'tax_query\'      => array(
            array(
                \'taxonomy\' => $taxonomy,
                \'field\'    => \'term_id\',
                \'terms\'    => $term,
            ),
        ),
    );

    $posts = new WP_Query( $args );

    // Output posts, etc.

endforeach;

相关推荐

Get category url in loop

我需要获取类别url,以便将其放入元代码段中。现在,span内的输出是带有url的标记。我只需要获取不带标记的url,并将其放入$cat\\u display中。我尝试使用2个选项,但会看到一个错误:注意:尝试获取非对象的属性// Get post category info $category = get_the_category(); if(!empty($category)) { // Get last category post is in