根据 WooCommerce 中的自定义字段过滤产品

Sal*_*iei 2 php product custom-fields query-string woocommerce

我对 WooCommerce 中的自定义字段有疑问:有没有办法根据自定义字段元键和值显示产品?

我创建了一个用于交付的产品自定义字段,元键是custom_text_field_delivery,值是24h5days7days

然后我尝试通过 URL 获取它们,例如:localhost/shop/?custom_text_field_delivery=24h,但没有成功。

有什么方法可以显示它们,或者我应该为每个选项创建单个页面?

Loi*_*tec 5

您可以使用以下命令根据查询字符串中的自定义字段过滤产品:

add_filter( 'woocommerce_product_query_meta_query', 'filter_products_with_custom_field', 10, 2 );
function filter_products_with_custom_field( $meta_query, $query ) {
    $meta_key = 'custom_text_field_delivery'; // <= Here define the meta key
    
    if ( ! is_admin() && isset($_GET[$meta_key]) && ! empty($_GET[$meta_key]) ) {
        $meta_query[] = array(
           'key'   => $meta_key,
           'value' => esc_attr($_GET[$meta_key]),
        );
    }
    return $meta_query;
}
Run Code Online (Sandbox Code Playgroud)

您将能够通过 URL 过滤产品,例如:localhost/shop/?custom_text_field_delivery=24h

代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。