WordPress:如何使用 $wp_query 按类别过滤帖子?
Posted
技术标签:
【中文标题】WordPress:如何使用 $wp_query 按类别过滤帖子?【英文标题】:WordPress: How to filter posts by category using $wp_query? 【发布时间】:2017-06-12 16:41:41 【问题描述】:我在 WordPress 上构建了一个带有静态首页的自定义主题,并且在 设置>阅读设置>首页显示中没有设置页面作为帖子页面。但是,我想在整个站点的不同静态页面上根据它们的类别显示帖子。因此,我永远不会通过控制台声明帖子索引页面。所以我使用了 $wp_query 函数。
如何向这个脚本添加一个过滤器,只显示“苹果”类别的帖子(例如)?目前,此脚本会显示所有帖子,无论类别如何。
<?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(); ?>
【问题讨论】:
【参考方案1】:您必须使用
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);
//...
//...
希望这会有所帮助!
【讨论】:
【参考方案2】:删除你的第一个 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
【讨论】:
以上是关于WordPress:如何使用 $wp_query 按类别过滤帖子?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 wordpress 中使用 wp_Query 输出 JSON?
Wordpress:WP_Query 如何使用自定义帖子类型应用搜索条件
使用新的 wp_query 将 sql 查询转换为 wordpress 查询
php Wordpress Bootstrap 4.1分页(使用自定义WP_Query()和全局$ wp_query支持)
php Wordpress Bootstrap 4.1分页(使用自定义WP_Query()和全局$ wp_query支持)