在 WordPress 中,WP_Query
是最常用的查询类,它允许你灵活地自定义和筛选文章、页面、附件或自定义文章类型等。以下是一些常用的 WP_Query
查询示例,包括排序、比较、分类法、元数据查询等。
1. 排序(Sorting)
通过 orderby
参数,你可以控制查询结果的排序方式。常见的排序方式包括按发布时间、标题、评论数等。
示例:按发布时间排序
$args = array(
'orderby' => 'date', // 按日期排序
'order' => 'DESC', // 降序
);
$query = new WP_Query($args);
示例:按评论数排序
$args = array(
'orderby' => 'comment_count', // 按评论数排序
'order' => 'DESC', // 降序
);
$query = new WP_Query($args);
2. 比较(Comparing)
WordPress 支持对文章的比较,例如按某些字段的值进行比较。通常是通过 meta_query
来进行比较。
示例:按某个自定义字段的值进行比较
假设我们有一个名为 price
的自定义字段,我们可以按照价格从低到高排序。
$args = array(
'meta_key' => 'price', // 自定义字段名
'orderby' => 'meta_value_num', // 按数字进行排序
'order' => 'ASC', // 升序
);
$query = new WP_Query($args);
3. 分类法(Taxonomy)
你可以通过 tax_query
参数来筛选属于某个分类(或自定义分类法)的文章。
示例:筛选特定分类的文章
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'category', // 分类法名称
'field' => 'slug', // 分类的字段
'terms' => 'news', // 分类的 slug
),
),
);
$query = new WP_Query($args);
示例:筛选多个分类的文章
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => array('news', 'events'), // 多个分类
),
),
);
$query = new WP_Query($args);
4. 元数据查询(Meta Query)
meta_query
允许你根据自定义字段的值进行文章查询,支持多种比较操作。
示例:根据自定义字段的值查询文章
假设我们有一个自定义字段 price
,想要查询价格大于 100 的文章。
$args = array(
'meta_query' => array(
array(
'key' => 'price',
'value' => 100,
'compare' => '>', // 大于 100
'type' => 'NUMERIC', // 指定类型为数字
),
),
);
$query = new WP_Query($args);
示例:多个元数据查询
你可以使用多个条件来查询文章。例如,查询价格大于 100 且发布时间在某个日期之后的文章:
$args = array(
'meta_query' => array(
'relation' => 'AND', // 可以设置为 OR 或 AND,控制关系
array(
'key' => 'price',
'value' => 100,
'compare' => '>',
'type' => 'NUMERIC',
),
array(
'key' => 'publish_date',
'value' => '2023-01-01',
'compare' => '>',
'type' => 'DATE',
),
),
);
$query = new WP_Query($args);
5. 自定义过滤器(Custom Filters)
你可以创建自定义的查询条件和过滤器来处理数据。例如,按自定义查询参数过滤文章。
示例:按特定 URL 参数进行查询
假设你希望根据 URL 中的查询参数 sort
来排序文章。
$sort = isset($_GET['sort']) ? $_GET['sort'] : 'date';
$args = array(
'orderby' => $sort, // 根据 URL 参数进行排序
'order' => 'DESC', // 降序
);
$query = new WP_Query($args);
6. 自定义搜索(Custom Search)
你可以自定义搜索功能来精确匹配某些内容。
示例:自定义搜索文章标题和内容
$args = array(
's' => 'search_term', // 'search_term' 为你要搜索的关键词
'posts_per_page' => -1, // 不限制返回结果数量
);
$query = new WP_Query($args);
示例:按自定义字段进行搜索
假设你想根据 price
自定义字段来进行搜索:
$args = array(
'meta_query' => array(
array(
'key' => 'price',
'value' => 100,
'compare' => '>',
'type' => 'NUMERIC',
),
),
'posts_per_page' => -1,
);
$query = new WP_Query($args);
7. 自定义文章类型(Custom Post Types)
你可以查询自定义文章类型,例如产品、作品等。
示例:查询自定义文章类型 "product" 的文章
$args = array(
'post_type' => 'product', // 自定义文章类型
'posts_per_page' => 10, // 每页显示 10 篇
);
$query = new WP_Query($args);
示例:查询自定义文章类型和分类法
$args = array(
'post_type' => 'product', // 自定义文章类型
'tax_query' => array(
array(
'taxonomy' => 'product_category', // 自定义分类法
'field' => 'slug',
'terms' => 'electronics', // 分类 slug
),
),
);
$query = new WP_Query($args);
8. 自定义字段(Custom Fields)
查询基于自定义字段的文章是非常常见的需求,尤其是电商网站或复杂的内容展示场景。
示例:按自定义字段查询
假设你有一个 price
的自定义字段,并且想按价格筛选文章。
$args = array(
'meta_query' => array(
array(
'key' => 'price',
'value' => 100,
'compare' => '>',
'type' => 'NUMERIC',
),
),
'posts_per_page' => 10,
);
$query = new WP_Query($args);
总结
通过 WP_Query
类,你可以在 WordPress 中灵活地进行各种类型的查询,包括排序、分类筛选、自定义字段查询、元数据查询等。你可以根据自己的需求创建精确的查询和过滤器,甚至使用自定义搜索功能来满足特殊需求。