我正在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>
似乎正在注入查询,但是我不知道在哪里或如何进行。
我可能在这里缺少很明显的东西。有任何想法吗?
答案 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()
页中的第一个。感谢所有研究它的人!