我试图只显示儿童帖子,我不需要分页。理论上,此代码应查询所有帖子,并在第二个查询中获取具有父级的帖子。但实际上它显示所有帖子与父母。
<?php
if ( get_query_var('paged') ) $paged = get_query_var('paged');
if ( get_query_var('page') ) $paged = get_query_var('page');
$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 );
if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<?php $parent_p = wp_get_post_parent_id( $post_ID ); ?>
<?php if ( 0 == 0 ) { ?>
<div class="col-md-12"><span><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></span></div>
<?php } ?>
<?php endwhile; wp_reset_postdata(); ?>
<div class="clearfix"></div>
<?php else : ?>
<?php get_template_part( 'content', 'none' ); ?>
<?php endif; ?>
答案 0 :(得分:1)
如果你正在寻找一个算法来获得那些没有儿童帖子的帖子那么算法应该是
第1步:获取数组中的所有post id(post_id_arr)。
第2步:在另一个数组中获取所有帖子的父ID(parent_id_arr);
步骤3:为parent_id_arr运行循环并从post_id_arr中删除父ID。
步骤4:现在post_id_arr将只有子邮件ID