WordPress WP_Query 完全指南:灵活查询文章数据

WP_Query 是 WordPress 最强大的数据查询类,几乎所有文章、页面、自定义内容类型的查询都依赖它。掌握 WP_Query,你就能精确控制 WordPress 显示什么内容、如何排序、如何过滤。

WP_Query 基础用法

创建一个 WP_Query 实例并传入参数数组:$query = new WP_Query(array('post_type'=>'post','posts_per_page'=>10,'orderby'=>'date','order'=>'DESC')); if($query->have_posts()){ while($query->have_posts()){ $query->the_post(); the_title(); } wp_reset_postdata(); }

常用查询参数

post_type——指定内容类型(post/page/自定义类型/any);posts_per_page——每页数量,-1 表示全部;paged——当前页码;orderby——排序字段(date/title/rand/meta_value/menu_order);order——ASC 升序或 DESC 降序;post_status——文章状态(publish/draft/private);author——按作者 ID 过滤;category_name——按分类别名过滤。

分类和标签查询

使用 tax_query 进行复杂分类查询:'tax_query'=>array(array('taxonomy'=>'category','field'=>'slug','terms'=>array('news','tech'),'operator'=>'IN'))。支持 IN、NOT IN、AND 等操作符,可以组合多个分类法条件。

元数据查询(meta_query)

查询自定义字段:'meta_query'=>array(array('key'=>'price','value'=>100,'compare'=>'>=','type'=>'NUMERIC'))。支持 =、!=、>、>=、<、<=、LIKE、BETWEEN、EXISTS 等比较操作符。

日期查询(date_query)

按日期范围过滤:'date_query'=>array(array('after'=>'2024-01-01','before'=>'2024-12-31','inclusive'=>true))。支持年、月、日、时、分、秒的精确过滤。

性能注意事项

避免 posts_per_page=-1 查询大量数据;使用 fields='ids' 只查询 ID 减少内存占用;合理使用 no_found_rows=true 跳过分页计数;避免在循环中嵌套 WP_Query。

总结

WP_Query 是 WordPress 开发的核心工具。熟练掌握其参数体系,你就能构建任何复杂的内容展示逻辑。

评论
暂无评论