2014-03-29 53 views
1

我想查詢任何具有選定某個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; ?> 

我不知道是否有內線檢查該值的方法查詢,如果是的話,如果它更快或更正確。

回答

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

感謝您的回答,但是我本來應該更具體。父母是與孩子不同的職位類型。有沒有辦法在郵政類型之間分配這些關係? – johnnyd23

+0

@ johnnyd23,在查詢中您應該使用子帖子的'post_type'!或者根本不要設置任何'post_type'(就像我編輯過的)。這樣你就可以檢索你父母的所有孩子,不管他們的帖子類型如何...... – MikO

+0

我已經通過發帖類型查詢。我需要通過發佈類型以及自定義字段值進行查詢。這個自定義字段是一個post_object,問題是我不知道如何檢查post_object – johnnyd23

0

我可以使用過濾查詢中的結果:

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

相關問題