Как реализовать разную цену для товара при выборе города?

Доброго времени суток.
Делаю на сайте разный ценник для товара при выборе города.

В принципе через кастомные поля получилось вывести цену на странице с товаром

add_filter('woocommerce_get_price', 'change_price_regular_member', 10, 2);
add_filter('woocommerce_get_regular_price', 'change_price_regular_member', 10, 2);
add_filter('woocommerce_get_sale_price', 'change_price_regular_member', 10, 2);
add_filter('woocommerce_order_amount_item_subtotal', 'change_price_regular_member', 10, 2);
function change_price_regular_member($orginal_price)
{
    global $post, $woocommerce;

    $city = $_COOKIE["remember_select"];

    switch ($city) {
        case 'gorod0':

            $new_price = $orginal_price + get_post_meta(get_the_ID(), 'gorod0', true);
            break;
        case 'gorod2':

            $new_price = $orginal_price + get_post_meta(get_the_ID(), 'gorod1', true);
            break;
        case 'gorod2':

            $new_price = $orginal_price + get_post_meta(get_the_ID(), 'gorod2', true);
            break;
        

        default:
            $new_price = $orginal_price;
            break;
    }

    return $new_price;
}


Но вот в корзине цена уже берется из базового поля. Как быть в данной ситуации? Этот вопрос был уже конечно задан тут: Как в WooCommerce реализовать разный ценник товара для разных городов? , но я не очень понял как это реализовать. Очень прошу помочь. Спасибо!
  • Вопрос задан
  • 714 просмотров
Решения вопроса 1
ElectricVst
@ElectricVst Автор вопроса
Нашел решение

add_filter('woocommerce_get_regular_price', 'return_custom_price', $product, 2);
add_filter('woocommerce_get_sale_price', 'return_custom_price', $product, 2);
add_filter('woocommerce_order_amount_item_subtotal', 'return_custom_price', $product, 2);
add_filter('woocommerce_get_price', 'return_custom_price', $product, 2);
function return_custom_price($price, $product)
{
    global $post, $woocommerce;
    $post_id = $product->id;
    $user_city = $_COOKIE["remember_select"];
    $get_user_currency = strtolower($user_city . '_price');
    if ($get_user_currency != '') {
        switch ($user_city) {
            case 'gorod0':

                $new_price = get_post_meta($post_id, 'gorod0', true);
                break;
            case 'gorod1':

                $new_price = get_post_meta($post_id, 'gorod1', true);
                break;
            case 'gorod2':

                $new_price = get_post_meta($post_id, 'gorod2', true);
                break;
           
        }

        if ($new_price == '') {
            $new_price = $price;
        }
    }
    return $new_price;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы