Проблема нескольких поставщиков одного продукта с несколькими поставщиками WCFM - PullRequest
0 голосов
/ 11 июля 2020

Я использовал тему Woodmart. Моя проблема заключается в том, что когда у нас есть один продукт с несколькими поставщиками, карусель продуктов 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);

, пожалуйста, дайте мне решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...