Проверяет подходит ли указанный плагин под текущие версии WordPress и PHP.
Функция считывает данные файла readme.txt
и на основе следующих заголовков определяет совместим ли текущий плагин с текущими версиями WP и PHP:
- Requires at least:
- Requires PHP:
ВАЖНО! В первом параметре нужно указать путь до главного файла плагина (не название папки плагина)! Если указать просто название плагина (его папки), то функция всегда будет возвращать true!
Хуков нет.
Возвращает
true/WP_Error. True если минимальные требования соблюдены, WP_Error при несовместимости.
Использование
validate_plugin_requirements( $plugin );
Примеры
#1 Проверка совместимости плагина
Проверим совместимость Версий PHP и WP для плагина Democracy Poll:
Для этого на хук активации плагина можно повесить следующий код:
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() ); // Выведет: // Error: Current WordPress and PHP versions do not meet minimum requirements for Democracy Poll. }
Список изменений
function validate_plugin_requirements( $plugin ) { $readme_file = WP_PLUGIN_DIR . '/' . dirname( $plugin ) . '/readme.txt'; if ( file_exists( $readme_file ) ) { $plugin_data = get_file_data( $readme_file, array( 'requires' => 'Requires at least', 'requires_php' => 'Requires PHP', ), 'plugin' ); } else { return true; } $plugin_data['wp_compatible'] = is_wp_version_compatible( $plugin_data['requires'] ); $plugin_data['php_compatible'] = is_php_version_compatible( $plugin_data['requires_php'] ); $plugin_data = array_merge( $plugin_data, get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ) ); if ( ! $plugin_data['wp_compatible'] && ! $plugin_data['php_compatible'] ) { return new WP_Error( 'plugin_wp_php_incompatible', sprintf( /* translators: %s: plugin name */ __( '<strong>Error:</strong> Current WordPress and PHP versions do not meet minimum requirements for %s.' ), $plugin_data['Name'] ) ); } elseif ( ! $plugin_data['php_compatible'] ) { return new WP_Error( 'plugin_php_incompatible', sprintf( /* translators: %s: plugin name */ __( '<strong>Error:</strong> Current PHP version does not meet minimum requirements for %s.' ), $plugin_data['Name'] ) ); } elseif ( ! $plugin_data['wp_compatible'] ) { return new WP_Error( 'plugin_wp_incompatible', sprintf( /* translators: %s: plugin name */ __( '<strong>Error:</strong> Current WordPress version does not meet minimum requirements for %s.' ), $plugin_data['Name'] ) ); } return true; }