WordPress:如何使用$ wp_query按类别过滤帖子?

时间:2017-01-27 03:20:28

标签: php wordpress custom-post-type posts

我在WordPress上构建了一个自定义主题,其中包含静态首页,并且设置>中没有设置页面。阅读设置>首页显示作为帖子页面。我想根据不同静态页面上整个网站的类别来显示帖子。因此,我永远不会通过控制台声明帖子索引页面。所以我使用$ wp_query函数。

如何向此脚本添加过滤器,该过滤器仅显示类别中的帖子" apples" (例如)?现在,此脚本显示所有帖子,无论其类别如何。

<?php
    $temp = $wp_query;
    $wp_query = null;
    $wp_query = new WP_Query();
    $wp_query->query('showposts=1' . '&paged='.$paged);
    while ($wp_query->have_posts()) : $wp_query->the_post();
?>

<h2><a href="<?php the_permalink(); ?>" title="Read"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
<?php the_date(); ?>

<?php endwhile; ?>

<?php if ($paged > 1) { ?>
    <p><?php previous_posts_link('Previous page'); ?>
    <?php next_posts_link('Next page'); ?></p>
<?php } else { ?>
    <p><?php next_posts_link('Next page'); ?></p>
<?php } ?>

<?php wp_reset_postdata(); ?>

2 个答案:

答案 0 :(得分:6)

  

您必须使用category_name(字符串 - 使用类别slug)或cat   (int - 使用类别ID),以WP_Query::query()中的类别发布。

以下是一个例子:

$category_name = 'apples'; //replace it with your category slug
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query('showposts=1' . '&paged=' . $paged . '&category_name=' . $category_name);
//...
//...

希望这有帮助!

答案 1 :(得分:5)

删除你的第一个php块并将其替换为

<?php
$args = array (
    'showposts' => '1',
    'category_name' => 'apples',
    'paged' => $paged
);
$the_query = new WP_Query( $args );

if ( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
?>

了解更多信息https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters