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

WordPress: How to filter posts by category using $wp_query?

我在 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(); ?>

删除你的第一个 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

You have to use category_name (string - use category slug) or cat (int - use category id), to get post by category in 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);
//...
//...

希望对您有所帮助!