排除类别Wordpress(WP_Query无法正常工作)

时间:2015-03-15 15:24:26

标签: php wordpress wp-query

有人可以解释为什么这个查询不起作用吗? 我想排除用主页标记的帖子。 它仍会显示带有类别名称'主页' ...

的帖子
<?php
    $query = new WP_Query( 'category_name=-homepage');
?>

<?php if ( $query->have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <?php
            get_template_part( 'content', 'news' );
        ?>
    <?php endwhile; ?>
    <?php the_posts_navigation(); ?>
    <?php else : ?>
        <?php get_template_part( 'content', 'none' ); ?>
<?php endif; ?>

2 个答案:

答案 0 :(得分:7)

如果在排除类别的情况下在文档中给出,您必须使用其ID而不是slug(检查here)。

你可以尝试:

$query = new WP_Query( array( 'category__not_in' => array( 11 ) ) );

答案 1 :(得分:2)

您的代码中有2个问题。

您使用slug而不是ID来排除某个类别,并且您没有正确使用自定义查询循环。

<?php
$query = new WP_Query( array(
    'cat' => -5, // replace with correct category ID. 
) );

if ( $query->have_posts() ) :

    // make sure we use have_posts and the_post method of our custom query.
    while ( $query->have_posts() ) : $query->the_post();
        get_template_part( 'content', 'news' );
    endwhile;

else:
    get_template_part( 'content', 'none' );
endif;

超出初始问题的范围,您无法在自定义循环中使用the_posts_navigation()。它作用于全球$wp_query。我怀疑你可能想要查看pre_get_posts过滤器。

进一步阅读:

http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts