在WooCommerce中的WC_Product_Query上按名称“ LIKE”过滤产品

时间:2020-05-28 15:58:24

标签: php wordpress woocommerce product

在WooCommerce中使用wc_get_products()函数,我想找到一种使用LIKE运算符按名称过滤产品的方法。

实际上,我只能使用以下特定名称来过滤产品:

$args = array(
    'limit' => 5,
    'name' => 'Test',
);
$result = wc_get_products( $args );

是否可以过滤名称为“ test” 的产品?

1 个答案:

答案 0 :(得分:4)

如果您查看“添加自定义参数支持” 部分末尾的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 );