[英]Can I filter a wp query by custom taxonomy and the status of an ACF file field?
我在这个问题上有点挣扎。 我有一个名为jobs的自定义帖子类型,它使用自定义分类法来标记工作状态; 已预订、完成等。自定义字段已使用 ACF 完成。
我想要做的是显示具有特定工作状态但尚未上传文件的工作列表。
例子; 作业状态 = 完成。 报告文件字段为空
到目前为止我得到的代码如下。 目前它所做的只是显示第一个 CPT 'jobs' 的 4x 实例 - 过滤器似乎没有什么区别。
<?php
// get posts
$reports = array (
'post_type' => 'jobs',
'post_status' => 'inherit',
'tax_query' => array (
array (
'taxonomy' => 'job_status',
'field' => 'slug',
'terms' => array( 'complete' )
),
),
'meta_query' => array (
'relation' => 'AND',
array (
'key' => 'report_upload',
'value' => '',
'compare' => 'NOT EXISTS'
)
)
);
if( $reports ): ?>
<ul>
<?php foreach( $reports as $reports ):
setup_postdata( $reports )
?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?> (date: <?php the_field('start_date'); ?>)</a>
</li>
<?php endforeach; ?>
</ul>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
可以使用meta_query
参数访问自定义帖子类型中的所有 ACF 字段。 例如,如果想要返回所有'post_type' => 'jobs'
,其中 ACF 自定义字段'report_field'
为空,您可以使用以下代码:
$args = array (
'post_type' => 'jobs',
'tax_query' => array (
array (
'taxonomy' => 'job_status',
'field' => 'slug',
'terms' => array( 'complete' )
),
),
'meta_query' => array (
'relation' => 'AND',
array (
'key' => 'report_field',
'value' => "",
'compare' => "="
)
)
);
如果您希望显示不存在report_field
jobs
,您可以将'compare' => "="
参数更改为'compare' => "NOT EXIST"
您可能会遇到的另一个陷阱是 post_status,因此请务必确保您的 custom_post_type 的 post_status 已发布。 否则,您可能需要为 post_status 使用不同的参数,例如:
'post_status' => 'inherit'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.