WP_Query
类或get_posts()
函数,通过设置'category_name'
或'cat'
参数指定目标分类,也可在模板文件中直接使用query_posts()
实现分类文章列表的查询与展示。在WordPress中调用特定分类的文章是常见需求,无论是展示专题内容还是构建分类归档页,以下是四种主流方法,适用于不同技术水平的用户:
使用区块编辑器(新手推荐)
适用于古腾堡编辑器用户,无需代码:
- 编辑文章/页面时添加 「最新文章」区块
- 在右侧面板的 「区块设置」→「查询设置」 中
- 选择 「按分类筛选」 并指定目标分类
- 调整显示数量、排序方式(日期/标题等)和布局样式
- 更新页面即可实时显示该分类下的文章列表
优势:可视化操作,实时预览,支持响应式布局
局限:自定义程度有限,依赖主题兼容性
短代码调用(中等难度)
通过插件或主题内置功能实现:
- 安装轻量级插件 「Display Posts Shortcode」(10万+活跃安装)
- 在任意页面/文章插入短代码:
[display-posts category="技术教程" posts_per_page="5" orderby="date"]
- 常用参数:
category="slug或ID"
(分类别名或ID)posts_per_page="数量"
order="ASC/DESC"
(升序/降序)include_excerpt="true"
(显示摘要)
技巧:用
category_display="list"
生成带样式的列表,wrapper_class="custom-class"
添加自定义CSS
WP_Query 代码调用(开发者方案)
在主题模板文件(如 sidebar.php
或自定义模板)中添加:
<?php $cat_query = new WP_Query( array( 'category_name' => 'news', // 分类别名 'posts_per_page' => 6, // 显示篇数 'orderby' => 'modified' // 按修改时间排序 )); if ( $cat_query->have_posts() ) : while ( $cat_query->have_posts() ) : $cat_query->the_post(); ?> <article> <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> <time><?php the_date(); ?></time> <p><?php echo wp_trim_words(get_the_excerpt(), 20); ?></p> </article> <?php endwhile; wp_reset_postdata(); // 重置查询 endif; ?>
关键参数:
category__in
:按分类ID数组调用ignore_sticky_posts
:忽略置顶文章tax_query
:多分类联合查询
分类归档页定制(SEO优化方案)
直接优化分类默认页面(如 /category/news/
):
- 创建
category-{slug}.php
模板(如category-news.php
) - 使用标准循环结构:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); // 调用文章内容模板 get_template_part( 'template-parts/content', 'archive' ); endwhile; // 分页导航 the_posts_pagination( array( 'mid_size' => 2 ) ); endif; ?>
注意事项
- 性能优化:
- 控制
posts_per_page
避免加载过多文章 - 对静态页面使用缓存插件(如 WP Rocket)
- 频繁更新的列表建议设置
'cache_results' => false
- 控制
- SEO 友好性:
- 为分类列表添加结构化数据(Schema ArticleList)
- 确保分页标签包含
rel="prev/next"
属性 - 使用
<h2>
而非<h1>
保持层级清晰
- 移动端适配:
- 测试列表在移动设备的触摸滑动体验
- 图片使用
srcset
响应式加载
方法选择建议
用户类型 | 推荐方案 | 工具依赖 |
---|---|---|
普通编辑 | 区块编辑器 | WordPress 原生 |
主题开发者 | WP_Query 定制 | 代码编辑器 |
SEO 优化需求 | 分类归档页模板 | 子主题文件 |
所有方案均需遵循 WordPress 编码标准,修改核心文件前务必创建子主题,数据调用优先使用
WP_Query
而非query_posts()
避免主循环冲突。
引用说明:
[1] WordPress官方区块编辑器文档 https://wordpress.org/support/article/wordpress-editor/
[2] Display Posts插件参数手册 https://displayposts.com/docs/
[3] WP_Query类参考(开发者资源) https://developer.wordpress.org/reference/classes/wp_query/
[4] Google E-A-T算法指南 https://developers.google.com/search/docs/essentials/experience-entity
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/39099.html