我正在尝试查询任何已选择某个post_object作为其“父级”的帖子。父值必须与当前帖子的ID匹配。我已经能够通过查询此帖子类型的所有帖子,然后比较循环中的值来复制此功能,如下所示:
<?php
$wp_query = new WP_Query();
$wp_query->query( array (
'post_type' => 'my_post_type',
'meta_key'=>'post_object_field'
));
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php
$parent = get_field('post_object_field');
$parentId = $parent->ID; ?>
<?php if ($postId == $parentId): ?>
// content
<?php endif; ?>
<?php endwhile; endif; ?>
我很想知道是否有办法在查询中检查这个值,如果是,那么它是否更快或更正确。
答案 0 :(得分:2)
要获取给定帖子/页面的子项的所有帖子/页面,您可以使用参数post_parent,使用父帖子的ID。
例如,如果您有帖子
$wp_query->query( array (
'post_type' => $children_post_type
'post_parent' => $postId
));
当然,是的,执行查询将比执行查询+获取字段值+创建变量+循环结果进行比较更有效...
编辑 :根据您的评论,您似乎真的想要在发布对象。此字段包含一个数字,它是与其相关的帖子的ID,因此您只需在查询中添加参数meta_value_num:
$wp_query->query( array (
'post_type' => 'my_post_type',
'meta_key' => 'post_object_field'
'meta_value_num' => $postId
));
这将检索包含post_object_field
值为$postId
的自定义字段的所有帖子。
编辑 :试试这个:
$args = array(
'post_type' => 'my_post_type',
'meta_query' => array(
array(
'key' => 'post_object_field',
'value' => $postId,
'compare' => '='
)
)
);
答案 1 :(得分:1)
我能够使用以下方法在查询中过滤结果:
<?php
$wp_query = new WP_Query();
$wp_query->query( array (
'post_type' => 'my_post_type',
'meta_query' => array(
array(
'key' => 'post_object_field',
'value' => $postId,
'compare' => '=='
)
)
));
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
// content
<?php endwhile; endif; ?>
答案 2 :(得分:1)
<?php
$wp_query = new WP_Query();
$wp_query->query( array (
'post_type' => 'my_post_type',
'meta_query' => array(
array(
'key' => 'post_object_field',
'value' => $postId,
'compare' => '=='
)
)
));
if(have_posts()):while(have_posts()):the_post(); ?&GT;
// content
enter code here