WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

validate_plugin_requirements() WP 5.2.0

Проверяет подходит ли указанный плагин под текущие версии WordPress и PHP.

Функция считывает данные файла readme.txt и на основе следующих заголовков определяет совместим ли текущий плагин с текущими версиями WP и PHP:

  • Requires at least:
  • Requires PHP:

ВАЖНО! В первом параметре нужно указать путь до главного файла плагина (не название папки плагина)! Если указать просто название плагина (его папки), то функция всегда будет возвращать true!

Хуков нет.

Возвращает

true/WP_Error. True если минимальные требования соблюдены, WP_Error при несовместимости.

Использование

validate_plugin_requirements( $plugin );
$plugin(строка) (обязательный)
Путь к главному файлу плагина относительно каталога плагинов. То что возвращает plugin_basename().

Примеры

#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.

}

Список изменений

С версии 5.2.0 Введена.
С версии 5.3.0 Added support for reading the headers from the plugin's main PHP file, with readme.txt as a fallback.

Код validate_plugin_requirements() WP 5.5.1

wp-admin/includes/plugin.php
<?php
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'] : '',
	);

	$readme_file = WP_PLUGIN_DIR . '/' . dirname( $plugin ) . '/readme.txt';

	if ( file_exists( $readme_file ) ) {
		$readme_headers = get_file_data(
			$readme_file,
			array(
				'requires'     => 'Requires at least',
				'requires_php' => 'Requires PHP',
			),
			'plugin'
		);

		$requirements = array_merge( $readme_headers, $requirements );
	}

	$compatible_wp  = is_wp_version_compatible( $requirements['requires'] );
	$compatible_php = is_php_version_compatible( $requirements['requires_php'] );

	/* translators: %s: URL to Update PHP page. */
	$php_update_message = '</p><p>' . sprintf(
		__( '<a href="%s">Learn more about updating PHP</a>.' ),
		esc_url( wp_get_update_php_url() )
	);

	$annotation = wp_get_update_php_annotation();

	if ( $annotation ) {
		$php_update_message .= '</p><p><em>' . $annotation . '</em>';
	}

	if ( ! $compatible_wp && ! $compatible_php ) {
		return new WP_Error(
			'plugin_wp_php_incompatible',
			'<p>' . sprintf(
				/* translators: 1: Current WordPress version, 2: Current PHP version, 3: Plugin name, 4: Required WordPress version, 5: Required PHP version. */
				_x( '<strong>Error:</strong> Current versions of WordPress (%1$s) and PHP (%2$s) do not meet minimum requirements for %3$s. The plugin requires WordPress %4$s and PHP %5$s.', 'plugin' ),
				get_bloginfo( 'version' ),
				phpversion(),
				$plugin_headers['Name'],
				$requirements['requires'],
				$requirements['requires_php']
			) . $php_update_message . '</p>'
		);
	} elseif ( ! $compatible_php ) {
		return new WP_Error(
			'plugin_php_incompatible',
			'<p>' . sprintf(
				/* translators: 1: Current PHP version, 2: Plugin name, 3: Required PHP version. */
				_x( '<strong>Error:</strong> Current PHP version (%1$s) does not meet minimum requirements for %2$s. The plugin requires PHP %3$s.', 'plugin' ),
				phpversion(),
				$plugin_headers['Name'],
				$requirements['requires_php']
			) . $php_update_message . '</p>'
		);
	} elseif ( ! $compatible_wp ) {
		return new WP_Error(
			'plugin_wp_incompatible',
			'<p>' . sprintf(
				/* translators: 1: Current WordPress version, 2: Plugin name, 3: Required WordPress version. */
				_x( '<strong>Error:</strong> Current WordPress version (%1$s) does not meet minimum requirements for %2$s. The plugin requires WordPress %3$s.', 'plugin' ),
				get_bloginfo( 'version' ),
				$plugin_headers['Name'],
				$requirements['requires']
			) . '</p>'
		);
	}

	return true;
}

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

Из метки: plugin (плагин)

Еще из раздела: Плагины, хуки

Комментариев нет