在 WooCommerce 的 WC_Product_Query 上按名称 "LIKE" 过滤产品
Filter products by name "LIKE" on a WC_Product_Query in WooCommerce
在使用 wc_get_products()
函数的 WooCommerce 中,我想找到一种使用 LIKE
运算符按 name 过滤产品的方法。
实际上我只能通过特定定义的名称过滤产品:
$args = array(
'limit' => 5,
'name' => 'Test',
);
$result = wc_get_products( $args );
是否可以过滤 名称类似于 'test' 的产品?
如果您查看 "Adding Custom Parameter Support" 部分末尾的 WooCommerce official documentation for WC_Product_Query
,您会发现您可以使用 WC_Product_Query自定义挂钩函数。
因此,要使用产品名称 "LIKE" 参数过滤查询,您可以使用搜索 "s" 参数扩展查询,这将达到以下目的:
add_filter( 'woocommerce_product_data_store_cpt_get_products_query', 'handle_custom_query_var', 10, 2 );
function handle_custom_query_var( $query, $query_vars ) {
if ( isset( $query_vars['like_name'] ) && ! empty( $query_vars['like_name'] ) ) {
$query['s'] = esc_attr( $query_vars['like_name'] );
}
return $query;
}
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
用法示例 自定义参数 "like_name":
$args = array(
'limit' => 5,
'like_name' => 'test',
);
wc_get_products( $args );
在使用 wc_get_products()
函数的 WooCommerce 中,我想找到一种使用 LIKE
运算符按 name 过滤产品的方法。
实际上我只能通过特定定义的名称过滤产品:
$args = array(
'limit' => 5,
'name' => 'Test',
);
$result = wc_get_products( $args );
是否可以过滤 名称类似于 'test' 的产品?
如果您查看 "Adding Custom Parameter Support" 部分末尾的 WooCommerce official documentation for WC_Product_Query
,您会发现您可以使用 WC_Product_Query自定义挂钩函数。
因此,要使用产品名称 "LIKE" 参数过滤查询,您可以使用搜索 "s" 参数扩展查询,这将达到以下目的:
add_filter( 'woocommerce_product_data_store_cpt_get_products_query', 'handle_custom_query_var', 10, 2 );
function handle_custom_query_var( $query, $query_vars ) {
if ( isset( $query_vars['like_name'] ) && ! empty( $query_vars['like_name'] ) ) {
$query['s'] = esc_attr( $query_vars['like_name'] );
}
return $query;
}
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
用法示例 自定义参数 "like_name":
$args = array(
'limit' => 5,
'like_name' => 'test',
);
wc_get_products( $args );