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

Ste*_*Vet 3 php wordpress product woocommerce

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

实际上,我只能按特定定义的名称过滤产品:

$args = array(
    'limit' => 5,
    'name' => 'Test',
);
$result = wc_get_products( $args );
Run Code Online (Sandbox Code Playgroud)

是否可以过滤名称为 LIKE 'test' 的产品

Loi*_*tec 7

如果您查看“添加自定义参数支持”部分末尾的WooCommerce 官方文档,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;
}
Run Code Online (Sandbox Code Playgroud)

代码位于活动子主题(或活动主题)的 functions.php 文件中。测试和工作。


带有自定义参数“like_name”的用法示例

$args = array(
    'limit' => 5,
    'like_name' => 'test',
);

wc_get_products( $args );
Run Code Online (Sandbox Code Playgroud)

  • 默认情况下,“s”参数已经在“wc_get_products()”上起作用。换句话说。您已经可以像这样使用它: `wc_get_products( array( 's' => 'Test' ) )` (2认同)