WordPress教程

wc_get_products 和 WC_Product_Query 查询类的所有参数及使用示例

阿里云

wc_get_products 和 WC_Product_Query 是 WooCommerce 用来查询产品的标准方法,改方法不会随着 WooCommerce 未来版本中的数据库更改而变化,因此,我们可以放心的使用此方法来进行自定义查询,以实现各种 WooCommerce 功能

虽然我们可以可以使用 WP_Query 来实现 WooCommerce 产品的自定义插件,但是可能会无法兼容未来的 WooCommerce 版本,所以不推荐使用这种方法。

也想出现在这里?联系我们
创客主机

通用参数

参数 类型 默认值 描述 可用值
status string 产品状态 ‘draft’, ‘pending’, ‘private’, ‘publish’
type string 产品类型 ‘external’, ‘grouped’, ‘simple’, ‘variable’ 或自定义产品类型
include array [] 包含产品 包含产品 ID 的整数数组
exclude array [] 排除产品 包含产品 ID 的整数数组
parent int 父产品 产品 ID
parent_exclude int 排除父产品 产品 ID
limit int posts_per_page 值 获取产品数量 最多获取产品数量,-1 为不限制
page int 1 当前分页数 获取产品的分页数,如果设置了 offset, 该值不起作用
paginate bool false 是否分页 true 获取分页, false 不获取
offset int 0 跳过的产品数量 任意整数
order string DESC 排序顺序 DESC 降序,ASC 升序
orderby string date 排序依据 ‘none’, ‘ID’, ‘name’, ‘type’, ‘rand’, ‘date’, ‘modified’
return string objects 返回数据类型 ids 或 objects

产品参数

参数 类型 默认值 描述 可用值
sku string 产品 SKU 产品 SKU 的一部分或全部
tag array [] 产品标签 标签别名数组
category array [] 产品分类 分类别名数组
weight float 重量 重量值
length float 长度 长度值
width float 宽度 宽度值
height float posts_per_page 值 高度 高度值
price float 价格 价格值
regular_price float 常规价格 常规价格值
sale_price float 销售价格 销售价格值
total_sales int 产品销售量 产品销售量
vitual bool 是否为虚拟产品 true/false
downloadable bool 是否为可下载产品 true/false
featured bool 是否为置顶产品 true/false
sold_individually bool 是否为单独销售的产品 true/false
manage_stock bool 是否为管理库存的产品 true/false
reviews_allowed bool 是否为允许评价的产品 true/false
backorders string 是否为延期交货的产品 ‘yes’, ‘no’, or ‘notify’
visibility string 产品可见性 ‘visible’, ‘catalog’, ‘search’, or ‘hidden’
stock_quantity int 产品库存 产品库存值
stock_status string 库存状态 ‘outofstock’ 或 ‘instock’
tax_status string 税收状态 ‘taxable’, ‘shipping’, or ‘none’
tax_class string 税收类型 税收类型别名
shipping_class string 物流类型 物流类型别名
download_limit int 下载限制 整数,-1 为无限制
download_expiry int 下载过期 整数,-1 为无限制
average_rating float 平均评分 小于等于 5 的浮点数
review_count int 评价数量 整数

日期参数

参数 类型 默认值 描述 可用值
date_created string 产品创建日期 YYYY-MM-DD 形式的日期和运算符
date_modified string 产品修改日期 YYYY-MM-DD 形式的日期和运算符
date_on_sale_from string 促销开始日期 YYYY-MM-DD 形式的日期和运算符
date_on_sale_to string 促销结束日期 YYYY-MM-DD 形式的日期和运算符

如果没有特别说明,日期参数的时区均为站点设置的时区。

  • YYYY-MM-DD – 匹配某一天的产品
  • >YYYY-MM-DD – 匹配某一天后的产品
  • >=YYYY-MM-DD – 匹配某一天或之后的产品
  • <YYYY-MM-DD – 匹配某一天之前的产品
  • <=YYYY-MM-DD – 匹配某一天和之前的产品
  • YYYY-MM-DD...YYYY-MM-DD – 匹配两个日期或之间的产品
  • TIMESTAMP – 匹配在 UTC 时区的那一秒内的产品。
  • >TIMESTAMP – 匹配在 UTC 时区的一秒后的产品。
  • >=TIMESTAMP – 匹配在 UTC 时区的一秒内或之后的产品。
  • <TIMESTAMP – 匹配在 UTC 时区的那一秒之前的产品。
  • <=TIMESTAMP – 匹配在 UTC 时区的那一秒内或之前的产品。
  • TIMESTAMP...TIMESTAMP – 匹配在 UTC 时区的秒数内或秒数之间的产品。

使用示例

使用 wc_get_products 进行自定义查询。

  1. $products = wc_get_products( array(
  2.     'downloadable' => true,
  3.     'date_created' => '2016-01-01...2016-12-31`,
  4. ) );

使用 WP_Product_Query 进行自定义查询。

  1. // Get 10 most recent product IDs in date descending order.
  2. $query = new WC_Product_Query( array(
  3.     'limit' => 10,
  4.     'orderby' => 'date',
  5.     'order' => 'DESC',
  6.     'return' => 'ids',
  7. ) );
  8. $products = $query->get_products();

添加自定义参数支持

除了使用上面的参数,我们海可以在 wc_get_products 或 WC_Product_Query 中添加对自定义参数的支持。要实现此功能,您需要过滤生成的查询,示例代码如下。

  1. /**
  2.  * 处理自定义“customvar”查询变量以获取具有“customvar”元数据的产品。
  3.  * @param array $query - WP_Query 参数
  4.  * @param array $query_vars - 来自 WC_Product_Query 的查询参数
  5.  * @return array modified $query 修改后的查询变量
  6.  */
  7. function handle_custom_query_var( $query, $query_vars ) {
  8. 	if ( ! empty( $query_vars['customvar'] ) ) {
  9. 		$query['meta_query'][] = array(
  10. 			'key' => 'customvar',
  11. 			'value' => esc_attr( $query_vars['customvar'] ),
  12. 		);
  13. 	}
  14.  
  15. 	return $query;
  16. }
  17.  
  18. add_filter( 'woocommerce_product_data_store_cpt_get_products_query', 'handle_custom_query_var', 10, 2 );

之后,就可以把上面的 customvar 作为查询参数使用了。

  1. $products = wc_get_products( array( 'customvar' => 'somevalue' ) );

wc_get_products 和 WC_Product_Query 查询类的所有参数及使用示例

已有 150 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!