我想查詢不是父級帖子的帖子。
張貼1
- 後2
- 發佈3
後4
- 發佈5
郵政6
因此,它應該僅顯示郵政2,柱3,柱5
此代碼僅顯示父一個,它應該如何查詢查詢所有子帖子wordpress帖子查詢參數查詢子帖子
$query = new WP_Query(array(
'post_type' => 'drama',
'paged' => $paged,
'post_parent' => 0
));
我想查詢不是父級帖子的帖子。
張貼1
- 後2
- 發佈3
後4
- 發佈5
郵政6
因此,它應該僅顯示郵政2,柱3,柱5
此代碼僅顯示父一個,它應該如何查詢查詢所有子帖子wordpress帖子查詢參數查詢子帖子
$query = new WP_Query(array(
'post_type' => 'drama',
'paged' => $paged,
'post_parent' => 0
));
你可以使用WP_Query
兩次來列出它。請考慮下面的代碼
<?php
$query = new WP_Query(array('post_type' => 'drama', 'paged' => $paged, 'post_parent' => 0));
if ($query->have_posts()) : ?>
<?php while ($query->have_posts()) : $query->the_post(); ?>
<?php $parent_id = get_the_ID();
\t \t $child_query= new WP_Query(array('post_type' => 'drama', 'post_parent' => $parent_id));
\t \t if ($child_query->have_posts()) :
\t \t \t while ($child_query->have_posts()) : $child_query->the_post();
\t \t \t \t //show post
\t \t \t endwhile;
\t \t endif;
\t \t wp_reset_postdata();
\t ?>
<?php endwhile;?>
<?php endif; ?>
您將需要運行2個查詢,但我們需要的是聰明在這裏,因爲它會變得非常昂貴,特別是如果你開始使用多個查詢通過foreach循環。
下面是我們會做:
運行我們的第一個查詢,收集頂級網頁僅頁ID的。這將是很瘦的查詢,我們將不會從頁面返回任何其他不必要的POSTDATA,除了自己的ID
我們將運行第二個查詢和簡單地排除(post__not_in
)頂級頁面,這將是一個數組ID的,我們從第一個查詢
來到這裏是所有的代碼
// Get all parent pages to exclude
$args1 = [
'post_type' => 'drama',
'post_parent' => 0, // Only return top level pages
'nopaging' => true, // Alias of posts_per_page => -1, Get all top level pages
'fields' => 'ids' // Only get pages ID's for performance
];
$exclude_parents = get_posts($args1);
// Now we can run our query as normal
$args = [
'post_type' => 'drama',
'post__not_in' => $excluse_parents, // Exclude parent pages
'paged' => $paged,
];
$query = new WP_Query($args);
// Run your loop as normal
這是相當昂貴的運行。另外,在上面的示例中,您正在運行4個查詢,而不是2個 –