我有一个正在循环浏览的页面(自定义帖子类型1)。嵌套在(自定义帖子类型1)内部,我有另一个循环(自定义帖子类型2)。我们的目标是要在“自定义帖子类型1”中选中“ ACF复选框”,以便根据(“自定义帖子类型1”)签入内容过滤“(自定义帖子类型2)”的结果。
我是StackOverflow和Wordpress开发的新手。但是我可以像上面描述的那样工作,但还是要回退。您必须具有(自定义帖子类型2)中可用的复选框,才能使$ meta_query工作。完全有道理,为什么在阅读文档后以及如何进行此设置。
我将如何做到这一点(自定义帖子类型2)不需要复选框(基于自定义帖子类型1)已选中的复选框进行过滤?
<?php
// Custom Post Type 1
$args1 = array(
'post_type' => 'custom_post_type_1',
'posts_per_page' => -1,
);
$custom_post_type_1 = get_posts( $args1 );
foreach( $custom_post_type_1 as $post ) : setup_postdata( $post );
// Do things
// Get the selected options from custom post type 1 and throw them into an array
$my_acf_checkbox = get_field('checkbox', $post->ID);
$meta_query = array('relation' => 'OR');
foreach( $my_acf_checkbox as $item ){
$meta_query[] = array(
'key' => 'checkbox',
'value' => $item,
'compare' => 'LIKE',
);
}
// Custom Post Type 2 (Nested)
$args2 = array(
'post_type' => 'custom_post_type_2',
'posts_per_page' => -1,
'meta_query' => $meta_query
);
$custom_post_type_2 = get_posts( $args2 );
foreach( $custom_post_type_2 as $post ) : setup_postdata( $post );
// Do things
wp_reset_postdata();
endforeach;
wp_reset_postdata();
endforeach;
?>
答案 0 :(得分:0)
我很好奇您为什么使用复选框ACF字段?返回的值是多少?帖子ID,子弹?我通常会使用Post Object字段并返回ID,因此它比将值硬编码到复选框字段中更具动态性。
我假设您在下面的解决方案的复选框中返回了post_id。
我可以看到您使用meta_query尝试执行的操作,但是如果您有ID,则可以在$ args2中使用post__in进行第二个循环,而不是这样:
int position = getTargetPosition(recycler);
recycler.scrollToPosition(position);
只需将您的ID自己推入数组,就像这样:
$my_acf_checkbox = get_field('checkbox', $post->ID);
$meta_query = array('relation' => 'OR');
foreach( $my_acf_checkbox as $item ){
$meta_query[] = array(
'key' => 'checkbox',
'value' => $item,
'compare' => 'LIKE',
);
}
然后在$ args2中的post__中使用新数组:
foreach( $my_acf_checkbox as $item ){
$cpt2s[] = $item;
}
让我知道这是否可以为您提供解决方案,或者有什么不合理的地方。