WCFM多供应商单一产品多供应商问题

时间:2020-07-11 09:15:08

标签: php wordpress woocommerce

我使用了Woodmart Theme,但我的问题是,当我们有一个具有多个供应商的Woodmart产品轮播产品时,会多次显示该产品。它应该只显示价格最低的其中之一。 在这里,我有WCFM支持团队提供的代码,但是不起作用:

add_filter('posts_clauses', function ($query_args) {
    global $WCFM, $wpdb;
    if (!wcfm_is_store_page() && apply_filters('wcfm_is_allow_product_loop_duplicate_hide', true)) {
        $more_offers = $wpdb->get_results("SELECT GROUP_CONCAT(product_id) as products, parent_product_id FROM `{$wpdb->prefix}wcfm_marketplace_product_multivendor` GROUP BY parent_product_id");

        $exclude = array();
        if (!empty($more_offers)) {
            foreach ($more_offers as $key => $value) {
                $product_ids = $value->products . ',' . $value->parent_product_id;

                $sql           = "SELECT product_id, stock_status, stock_quantity FROM {$wpdb->wc_product_meta_lookup} wc_product_meta_lookup WHERE product_id IN ({$product_ids})  ORDER BY wc_product_meta_lookup.min_price ASC";
                $product_metas = $wpdb->get_results($sql);

                if (!empty($product_metas)) {
                    $is_first = true;
                    foreach ($product_metas as $pmkey => $product_meta) {
                        if ($product_meta->stock_status == 'outofstock') continue;
                        $post_status = get_post_status($product_meta->product_id);
                        if ($post_status != 'publish') continue;
                        if ($is_first) {
                            $is_first = false;
                            continue;
                        }
                        $exclude[] = $product_meta->product_id;
                    }
                }
            }
        }

        if (!empty($exclude)) {
            if (isset($query_args['post__in'])) {
                $query_args['post_in'] = array_diff($query_args['post_in'], $exclude);
            } else {
                $query_args['post__not_in'] = $exclude;
            }
        }
    }
    return $query_args;
}, 50);

请给我一个解决办法。

0 个答案:

没有答案