查询由post_object自定义字段过滤的帖子

问题描述:

我想查询任何具有选定某个post_object作为其“父”的帖子。父值必须与当前帖子的ID匹配。我已经能够通过查询这个职位类型的所有帖子,然后比较循环内的值,像这样复制此功能:查询由post_object自定义字段过滤的帖子

<?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; ?> 

我不知道是否有内线检查该值的方法查询,如果是的话,如果它更快或更正确。

要获取给定帖子/页面的所有帖子/页面,您可以使用参数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' => '=' 
    ) 
) 
); 
+0

感谢您的回答,但是我本来应该更具体。父母是与孩子不同的职位类型。有没有办法在邮政类型之间分配这些关系? – johnnyd23

+0

@ johnnyd23,在查询中您应该使用子帖子的'post_type'!或者根本不要设置任何'post_type'(就像我编辑过的)。这样你就可以检索你父母的所有孩子,不管他们的帖子类型如何...... – MikO

+0

我已经通过发帖类型查询。我需要通过发布类型以及自定义字段值进行查询。这个自定义字段是一个post_object,问题是我不知道如何检查post_object – johnnyd23

我可以使用过滤查询中的结果:

<?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; ?> 

<?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' => '==' 
     ) 
    ) 
)); 

如果(have_posts() ):while(have_posts()):the_post(); ?>

// content 

enter code here