首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖WooCommerce筛选器中最低和最高价格的标准请求处理,以便从自定义字段中按价格获取产品

覆盖WooCommerce筛选器中最低和最高价格的标准请求处理,以便从自定义字段中按价格获取产品
EN

Stack Overflow用户
提问于 2020-12-19 00:13:58
回答 1查看 427关注 0票数 1

商品的价格记录在数据库表的自定义字段$ custom_price中,其中包含商品ID和价格。因此,在category页面上按价格过滤时,它仅按标准WooCommerce价格字段过滤。我需要过滤产品的最低和最高价格的自定义价格字段,什么是在自定义表wp_product_prices中的产品。例如:我使用woocommerce过滤器按价格过滤产品,并在分类页面上获得结果。问题是: products没有显示,因为我在我的products中使用了非标准的价格字段,只找到了文件https://github.com/woocommerce/woocommerce/blob/master/includes/class-wc-query.php,它有请求处理价格,函数price_filter_post_clauses ($ args,$ wp_query)。也许有某种用于覆盖的钩子,或者您如何实现它?我的自定义价格表到products https://prnt.sc/w60t5p字段"product_id“等于wp_posts表中的产品"ID”。

EN

回答 1

Stack Overflow用户

发布于 2020-12-25 21:39:54

对于最低和最高价格的更改查询,使用操作"woocommerce_product_query“并停用标准筛选器'posts_clauses‘。如下所示:

代码语言:javascript
复制
add_action('woocommerce_product_query', 'min_max_price_handler');

function min_max_price_handler($q) {
    global $wpdb, $wp_query;

    if (! $wp_query->is_main_query() || ( ! isset($_GET['max_price']) && ! isset($_GET['min_price']))) {
        return;
    }

    // Remove default Woocommerce min/max price request handler
    remove_filter('posts_clauses', [WC()->query, 'price_filter_post_clauses'], 10);

    $current_min_price = isset($_GET['min_price']) ? floatval(wp_unslash($_GET['min_price'])) : 0;
    $current_max_price = isset($_GET['max_price']) ? floatval(wp_unslash($_GET['max_price'])) : PHP_INT_MAX;

    $sql = "SELECT DISTINCT product_id FROM wp_product_prices WHERE country=%s AND price >= %f AND price <= %f";

    $results = $wpdb->get_results(
        $wpdb->prepare(
            $sql,
            $customer_country,
            $current_min_price,
            $current_max_price
        ),
        ARRAY_A
    );

    $results = array_column($results, 'product_id');

    if (is_array($results)) {
        $q->set('post__in', $results);
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65360345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档