Разрабатывая дополнения для WooCommerce я столкнулся с необходимостью проверки текущей версии данного плагина. Это нужно в первую очередь для того, чтобы обеспечивать совместимость кода и избежать появления всевозможных ошибок. Предлагаю вашему вниманию следующее решение данной задачи:
if (!function_exists('get_woo_version_number')) {
function get_woo_version_number() {
// If get_plugins() isn't available, require it
if (!function_exists('get_plugins')) {
require_once( ABSPATH . 'wp-admin/includes/plugin.php');
}
// Create the plugins folder and file variables
$plugin_folder = get_plugins('/' . 'woocommerce');
$plugin_file = 'woocommerce.php';
// If the plugin version number is set, return it
if (isset($plugin_folder[$plugin_file]['Version'])) {
return $plugin_folder[$plugin_file]['Version'];
} else {
return null;
}
}
}
Код выше вы можете вставить в файл function.php вашей темы либо в код вашего плагина. Если вы заметили, то я обернул функцию в условие function_exists. Можно данный if убрать, но в таком случае я настоятельно рекомендую добавить функции get_woo_version_number
какой-нибудь уникальный префикс (особенно, если вы пишите плагин).
Пример использования:
echo get_woo_version_number();
Этот код выведет на экран номер текущей версии вукомерц.
Как добавить поддержку проверки версии вашего плагина на совместимость с WooCommerce
Наверняка вы видели, что Вукомерц при выходе новой версии может уведомить пользователя о том, что такие-то плагины совместимы, а такие-то не проходили проверку на совместимость с новой версией Вукомерца. Выглядит это примерно так:
А достигается очень просто. В шапку вашего плагина необходимо добавить следующую информацию:
WC requires at least: 3.0.0
WC tested up to: 3.5.5
где WC requires at least - минимальная версия WooCommerce, необходимая для работы, а WC tested up to: 3.5.5 - последняя версия WooCommerce с которой проверялась совместимость с вашим плагином.
Пример кода моего плагина:
Еще одна функция, которая вам может понадобиться. Нарыл на зарубежном форуме:
/**
* Check WooCommerce Version
* @param string $version
* @return bool
*/
function woo_feed_wc_version_check($version = '3.0') {
if (class_exists('WooCommerce')) {
global $woocommerce;
if (version_compare($woocommerce->version, $version, ">=" )) {
return true;
}
}
return false;
}