## VALIDATE_PLUGIN_REQUIREMENTS() │ WP 5.2.0
Функция VALIDATE_PLUGIN_REQUIREMENTS() проверяет, соответствуют ли требования плагина версии WordPress и версии PHP.
Она использует информацию из заголовков
- **Requires at least**,
- **Requires PHP**,
- **Requires Plugins**,
определенных в основном PHP файле плагина.
### Используемые функции
- is_wp_version_compatible()
- is_php_version_compatible()
- get_file_data()
### Нет хуков
### Возвращаемое значение
true | WP_Error. Возвращает true, если требования выполнены, и WP_Error в случае ошибки.
### Как использовать
```php
validate_plugin_requirements( $plugin );
Параметры:
$plugin(string) (обязательный) — Путь к файлу плагина относительно директории плагинов.
Примеры
Проверка совместимости плагина
Проверим совместимость версий PHP и WP для плагина Democracy Poll:
Для этого следующий код можно вставить в хук активации плагина:
register_activation_hook( __FILE__, 'myplugin_activate' );
function myplugin_activate(){
// Используем для админки
require_once ABSPATH . '/wp-admin/includes/plugin.php';
$plugin = 'democracy-poll/democracy.php';
$valid = validate_plugin_requirements( $plugin );
if( is_wp_error( $valid ) ){
wp_die( $valid->get_error_message() );
// Это приведет к выводу:
// Ошибка: Текущие версии WordPress и PHP не соответствуют минимальным требованиям для Democracy Poll.
}
}
Изменения в версии
- С 5.2.0 - Функция была введена.
- С 5.3.0 - Добавлена поддержка чтения заголовков из основного PHP файла плагина.
- С 5.8.0 - Удалена поддержка использования readme.txt как резервного варианта.
- С 6.5.0 - Добавлена поддержка заголовка 'Requires Plugins'.
Код функции VALIDATE_PLUGIN_REQUIREMENTS
function validate_plugin_requirements( $plugin ) {
$plugin_headers = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
$requirements = array(
'requires' => ! empty( $plugin_headers['RequiresWP'] ) ? $plugin_headers['RequiresWP'] : '',
'requires_php' => ! empty( $plugin_headers['RequiresPHP'] ) ? $plugin_headers['RequiresPHP'] : '',
'requires_plugins' => ! empty( $plugin_headers['RequiresPlugins'] ) ? $plugin_headers['RequiresPlugins'] : '',
);
$compatible_wp = is_wp_version_compatible( $requirements['requires'] );
$compatible_php = is_php_version_compatible( $requirements['requires_php'] );
if ( ! $compatible_wp && ! $compatible_php ) {
return new WP_Error(
'plugin_wp_php_incompatible',
sprintf(
'Ошибка: Текущие версии WordPress (%1$s) и PHP (%2$s) не соответствуют минимальным требованиям для %3$s. Плагин требует WordPress %4$s и PHP %5$s.',
get_bloginfo( 'version' ),
PHP_VERSION,
$plugin_headers['Name'],
$requirements['requires'],
$requirements['requires_php']
)
);
} elseif ( ! $compatible_php ) {
return new WP_Error(
'plugin_php_incompatible',
sprintf(
'Ошибка: Текущая версия PHP (%1$s) не соответствует минимальным требованиям для %2$s. Плагин требует PHP %3$s.',
PHP_VERSION,
$plugin_headers['Name'],
$requirements['requires_php']
)
);
} elseif ( ! $compatible_wp ) {
return new WP_Error(
'plugin_wp_incompatible',
sprintf(
'Ошибка: Текущая версия WordPress (%1$s) не соответствует минимальным треб��ваниям для %2$s. Плагин требует WordPress %3$s.',
get_bloginfo( 'version' ),
$plugin_headers['Name'],
$requirements['requires']
)
);
}
return true;
}
Связанные функции
activate_plugins()deactivate_plugins()get_plugin_data()get_plugins()is_plugin_active()plugin_basename()wp_get_active_and_valid_plugins()