WP_query返回所有帖子,而不是自定义帖子类型

时间:2019-01-23 15:24:31

标签: wordpress custom-post-type

我正在WP网站上工作,此WordPress查询存在一个奇怪的问题,该问题只应返回自定义帖子类型osku_infopost的帖子。但是相反,我得到了网站上的所有帖子(和页面,当然是post_type页面)。 奇怪的部分:只有当用户转到主URL(mysite.com)时,才会发生这种情况。如果我访问网站上的另一个页面(即mysite.com/apage),查询将提供预期的结果。

<?php 
// fetch all infoposts in a query
$args = array(
    'post_type'      => 'osku_infopost',
    'orderby'        => 'menu_order',
    'order'          => 'ASC',
    'posts_per_page' => -1,
);

$infopost_query = new WP_Query( $args ); ?>

<div class="infoposts-container">
    <ul id="infoposts">
    <?php while ( $infopost_query->have_posts() ) : $infopost_query->the_post(); ?>
        <li class="infopost-item">
            <?php echo get_the_title($infopost_query->post->ID); ?>
            <?php echo get_the_content($infopost_query->post->ID); ?>
        </li>   
    <?php endwhile; ?> 
    </ul>
</div>

似乎正在注入查询,但是我不知道在哪里或如何进行。

我可能在这里缺少很明显的东西。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题:我最初使用的functions.php中有一个过滤器,因为我使用主查询一次检索多个页面(post_type页面)。

function my_get_posts( $query ) {
  if ( is_home() && false == $query->query_vars['suppress_filters'] )
     $query->set( 'post_type', array( 'post', 'page') );
  return $query;
}
add_filter( 'pre_get_posts', 'my_get_posts' );

当此过滤器处于活动状态时,传递给post_type的数组中的WP_query字段(请参阅有问题的代码)似乎被忽略了,查询自动返回了post_type帖子的所有帖子,并且传递给post_type的数组中所述的$query->set()页中的第一个。感谢所有研究它的人!