Проблема с фильтром WooCommerce "woocommerce_product_get_price" - PullRequest
1 голос
/ 06 мая 2020

У меня есть магазин WooCommerce (WordPress 5.4.1 и WooCommerce 4.1.0), и я пытаюсь установить цены в зависимости от местоположения клиента, поэтому для этого я обычно использую небольшой фрагмент, я обновляю устаревшие функции из моих фрагментов я обновил несколько, обнаружив какие-либо проблемы, но с этим я не понимаю, почему устаревший метод работает, а новый - нет.

Вот код с устаревшей версией вместо woocoomemerce_product_get_price старый метод использует woocommerce_get_price, он работает, цена для клиентов Барселоны увеличивается на правильный множитель, но этот код влияет на WordPress, например, если я попробуйте обновить плагин, у меня возникла ошибка, или если я попытаюсь найти новый плагин, будет отображаться любой результат, пока я не нажму f5.

add_filter( 'woocommerce_get_price', 'change_specific_products_price', 10, 2 );
function change_specific_products_price( $price, $product ) {
$userInfo = geoip_detect2_get_info_from_current_ip();

if ( has_term('skf', 'product_cat', $product->get_id() ) && $userInfo->city->name == 'Barcelona' ) {
   $price *= 1.20;
}
return $price;
} 

Итак, я решил обновить устаревшие функции, проверяю документацию WooCommerce , но я не понимаю, почему устаревший метод работает, а новый нет.

Вот обновленная версия кода

  add_filter( 'woocommerce_product_get_price', 'change_specific_products_price_2', 10, 2 );
  function change_specific_products_price_2( $price, $product ) {
  $userInfo = geoip_detect2_get_info_from_current_ip();

if ( has_term('skf', 'product_cat', $product->get_id() ) && $userInfo->city->name == 'Barcelona' ) {
   $price *= 1.20;
}
return $price;
} 

Я застрял на этом этапе, любая помощь будет отличной.

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Большое спасибо за ваш ответ, но код не работает, это что-то странное, с устаревшей функцией работает, а с новой нет, поэтому я полностью потерялся.

Я связался с темой автора, может ли этот код каким-либо образом повлиять на работу woocommerce или тему.

Это похоже на то, что этот код ломается ajax reload, вот почему, когда я ищу новый плагин в бэкэнде wordpress, ничего не показываю, пока я не обновлю sh страницу вручную, нажав f5.

0 голосов
/ 06 мая 2020
add_filter( 'woocommerce_product_get_price', 'change_specific_products_price', 10, 2 );

function change_specific_products_price( $price, $product ) {

    $userInfo = geoip_detect2_get_info_from_current_ip();

    if ( has_term( 'cloth', 'product_cat', $product->get_id() ) && $userInfo->city->name == 'Barcelona' ) {
        $price *= 1.20;
    }
    return $price;
}

Работает нормально.

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