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”检索所有帖子,然后按分类过滤的主要内容,如果未能解决你的问题,请参考以下文章