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);
//...
//...
希望对您有所帮助!
我在 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) orcat
(int - use category id), to get post by category inWP_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);
//...
//...
希望对您有所帮助!