Wordpress - 按“post_type”检索所有帖子,然后按分类过滤

Posted

技术标签:

【中文标题】Wordpress - 按“post_type”检索所有帖子,然后按分类过滤【英文标题】:Wordpress - Retrieve all Posts by 'post_type' then filter by taxonomy 【发布时间】:2020-06-04 03:53:12 【问题描述】:

我有一个安装了 ACF(高级自定义字段)的 Wordpress 安装。我创建了 Class 帖子类型,每个 Class 都有它的 Location 值。 如何检索每个班级并获得我为该班级选择的位置? 我目前正在使用此函数来检索“程序”的名称:

<pre>
    $args = array(
        'post_type' => 'class',
        'posts_per_page' => -1,
    );
    $query = new WP_Query($args);
    if ($query->have_posts() ) : 
        while ( $query->have_posts() ) : $query->the_post();
            echo get_the_ID();
            echo get_the_title();
        endwhile;
    endif;
</pre>

我正在尝试填充下拉列表“位置”,该列表使用该位置可用的类过滤下一个下拉列表。 任何帮助或建议将不胜感激。谢谢

【问题讨论】:

您需要添加更多信息,因为任何答案都会猜测您如何存储数据。 对我的问题缺乏透明度表示歉意。我将尝试在以后的问题中包含更多信息。我已经设法解决了我的问题,并将其作为答案发表评论。感谢您的建议。 【参考方案1】:

我设法使用trev 的上一个答案找到了解决方案。 这是我实施的解决方案:

<pre>
$args = array(
    'post_type' => 'class',
    'posts_per_page' => -1,
);
$query = new WP_Query($args);
$classArray = [];
if ($query->have_posts() ) 
    while ( $query->have_posts() ) : $query->the_post();
        $id = get_the_ID();
        $location = wp_get_post_terms($id, 'location');
        $location = $location[0]->name;
        $classArray[] = array(
            'id'        => get_the_ID(),
            'name'  => html_entity_decode(get_the_title()),
            'location'  => $location
        );

    endwhile;
    wp_reset_postdata();

</pre>

这使我可以创建一个数组,其中包含类 ID、类的名称以及与其关联的位置。谢谢你的建议。

【讨论】:

很高兴你知道了!我建议保留get_the_terms,因为wp_get_post_terms 没有被缓存。【参考方案2】:

不确定这是否是您所要求的,但您可以通过以下方式将每个帖子位置拉到查询循环中。只需将 get_the_terms 函数中的 locations 更新为您命名的分类。

if ($query->have_posts() ) : 
    while ( $query->have_posts() ) : $query->the_post();
        $locations = get_the_terms($post->ID, 'locations');

        echo get_the_ID();
        echo get_the_title();

        foreach ($locations as $location) :
          echo '<p>' . $location->name . '</p>';
        endforeach;
    endwhile;
endif;

【讨论】:

以上是关于Wordpress - 按“post_type”检索所有帖子,然后按分类过滤的主要内容,如果未能解决你的问题,请参考以下文章

按ID的WordPress查询分类法

按帖子类型筛选WordPress搜索结果

为 post_type = ?? 的每个 id 添加元值WordPress

wordpress调用自定义post_type文章

在 Wordpress 中按两个元 ACF 字段排序

定义了特定 post_type 的帖子中的页面导航在 Wordpress 中不起作用