Wordpress WP_Query没有返回post_type

时间:2017-02-04 16:22:17

标签: wordpress

我正在WordPress网站主页上创建一个“精选内容”部分。 我添加了一个函数,允许将标记添加到页面中。

然后,在index.php我添加了:

<?php $featured_pages = new WP_Query( array(
    'post_type' => 'page',
    'tag' => 'featured', 
    'posts_per_page' => 5
));
if ( $featured_pages-> have_posts() ) : 
    while ( $featured_pages->have_posts() ) : $featured_pages-> the_post();
        get_template_part( 'template-parts/content-featured');
    endwhile; 
endif;
wp_reset_postdata(); ?>

但由于某种原因,post_type数组的WP_Query部分无效。 它返回所有post_types。如果我将其更改为'attachment',它仍然会返回帖子和页面。

我是WordPress的新手,我在这里错过了一些东西吗?

经过进一步调查后,似乎'tag'会覆盖'post_type'。没有它,它只显示页面。有了它,帖子也包括在内。

1 个答案:

答案 0 :(得分:0)

这个问题无法回答,因为我没有意识到这个问题是由我在其他地方添加的功能引起的,我没有在这里添加。

但是,其他人可能认为这很有用,因为我使用的代码主要来自此资源https://www.sitepoint.com/wordpress-pages-use-tags

我添加了此功能(从其他地方复制并粘贴):

function tags_support_query($wp_query) {
    if ($wp_query->get('tag')) $wp_query->set('post_type', 'any');
}

add_action('pre_get_posts', 'tags_support_query');

我认为,如果您使用WP_Query获取标记,则始终将帖子类型设置为&#39; any&#39;。我认为这不好,所以我删除了它,问题中的代码按预期工作。