Я создаю плагин для Woocommerce, и мне нужно заблокировать его установку, когда страна магазина находится не в США (например)
function init(){
if (in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' )))) {
$shop_country = WC()->countries->get_base_country(); // FAIL: Call to a member function get_base_country() on null
if ($shop_country !== 'US') {
add_action( 'admin_notices', 'show_error' ); return;
}
/**
* The core plugin class that is used to define internationalization,
* admin-specific hooks, and public-facing site hooks.
*/
init_my_plugin();
}
else{
add_action( 'admin_notices', 'show_error' );
}
}
add_action('plugins_loaded','init');
function show_error(){
?>
<div class="error">
<p><?php _e( 'This plugin requires WooCommerce in order to work.', 'plugin' ); ?></p>
</div>
<?php
}
В своей функции инициализации я пытаюсь получить магазин страна (здесь ОШИБКА), и если это не США, я показываю ошибку и не позволяю им установить плагин. Однако у меня возникла ошибка: вызов функции-члена get_base_country () с нулевым значением.
Я считаю, что моя функция вызывается, когда объект Woocommerce не готов. Не могли бы вы показать мне правильный крючок для этого? Я хочу узнать местонахождение магазина, чтобы проверить, поддерживает ли мой плагин эту страну
Примечание: что я имею в виду в магазине / стране магазина? Я имею в виду поле страны в настройке Woocommerce.