Как исправить вызов в неопределенной функции get_woocommerce_currency () в WordPress? - PullRequest
0 голосов
/ 29 мая 2018

Я разрабатываю пользовательский плагин доставки для своего веб-сайта WooCommerce.

Я хочу изменить способ доставки на мой собственный метод, если и только если валюта пользователя равна USD.Помимо доллара, я использую LKR в качестве другой денежной единицы.Если валюта в LKR, следует применять другой способ доставки.

Поэтому я попытался проверить, находится ли текущая базовая валюта пользователя в долларах США, используя этот код в моем файле plugin.php,

Мой код plugin.php включает в себя -> wp-content/plugins/my-plugin

 if ( 'USD' !== get_woocommerce_currency() ) {
    echo 'Hello  ';
    //my action
}   

Так что теперь каждый раз, когда я запускаю этот код, я получаю фатальную ошибку, говоря:

Call to undefined function get_woocommerce_currency()

Затем я попытался включить option.php,

include_once('wp-includes/option.php');

по-прежнему выдает то же сообщение об ошибке.

Как это исправить и почему я получаю эту ошибку?

Что я хочу сделать, это просто проверить текущую валюту пользователя и активировать плагин, есливалюта только в долларах США.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Перед вызовом функции get_woocommerce_currency() вы должны проверить, существует функция или нет.get_woocommerce_currency() существует в wc-core-functions.php файле.

if ( !function_exists( 'get_woocommerce_currency' ) ) { 
  require_once '/includes/wc-core-functions.php'; 
} 


$currency_code = get_woocommerce_currency();

if ( 'USD' !== $currency_code  ) {
      echo 'Hello  ';
     //my action
}    

get_woocommerce_currency() - это функция WooCommerce.Вы найдете его в каталоге wp-content\plugins\woocommerce\includes.

0 голосов
/ 29 мая 2018

Исправление вашей проблемы будет зависеть от того, как / когда вы вызываете те строки кода, которые у вас есть.

Во-первых, если вы добавили хук на woocommerce_init, это не будетпроблема.

Очень очень простой пример, чтобы показать, что я имею в виду.

add_action( 'woocommerce_init', 'wc_init' );
function wc_init(){
    // get_woocommerce_currency() will not throw error here.
}

Если вы создаете плагин, который должен работать вместе с WooCommerce, я предлагаю вам запустить его плагин внутрифункциональная привязка к woocommerce_init.


Я не совсем уверен, что ты задумал.Но если вы просто интересуетесь валютой, то можете просто сделать это:

$currency = apply_filters( 'woocommerce_currency', get_option( 'woocommerce_currency' ) );
if ( 'USD' !== $currency ) {
    echo 'Hello  ';
    //my action
}

Опять же, работая вместе с WooCommerce, вы должны использовать 'woocommerce_init', чтобы перехватить вашу функцию.


обновление 3

function add_chalitha_shipping_method( $methods ) {
    if ( 'USD' == get_woocommerce_currency() ) {
         $methods[] = 'test_Shipping_Method';
    }
    return $methods;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...