validate_plugin_requirements() WP 5.2.0

Click here to view original web page at wp-kama.ru

Проверяет подходит ли указанный плагин под текущие версии 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;
}

Cвязанные функции