validate_plugin_requirements() WP 5.2.0

Перевіряє чи підходить вказаний плагін під поточні версії WordPress та PHP.

Функція зчитує дані файлу плагіна і на основі наступних заголовків визначає, чи сумісний поточний плагін з поточними версіями WP і PHP:

  • Requires at least:
  • Requires PHP:

До версії WP 5.3 дані зчитувалися з файлу readme.txt .

C версії WP 5.3 readme.txtстав додатковим файлом, у якому можуть бути ці заголовки.

З версії 5.8.0 readme.txtбуло видалено з підтримки і тепер ці заголовки повинні бути саме в основному файлі плагіна.

ВАЖЛИВО! У першому параметрі потрібно вказати шлях до головного файлу плагіна (не назва папки плагіна)! Якщо вказати просто назву плагіна (його папки), то функція завжди повертатиме true!

Хуків немає.

Повертає

true|WP_Error. True якщо мінімальних вимог дотримано, WP_Error при несумісності.

Використання

validate_plugin_requirements( $plugin );
$plugin
(рядок) (обов’язковий)
Шлях до головного файлу плагіну щодо каталогу плагінів. Те, що повертає
plugin_basename() .

Приклади

0

#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 і PHP версії не можуть скористатися мінімальними потребами для Democracy Poll.

}

список змін

З версії 5.2.0Введено.
З версії 5.3.0Added support for reading headers from the plugin’s main PHP file, with readme.txt as a fallback.
З версії 5.8.0Removed support for using readme.txt як fallback.

Код validate_plugin_requirements() WP 6.0.2

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'] : '',
	);

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

	$php_update_message = '</p><p>' . sprintf(
		/* translators: %s: URL для Update PHP page. */
		__( '<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> Сучасні версії WordPress (%1$s) та PHP (%2$s) не мають мінімальних потреб для %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) не має мінімуму потреб для %2$s. 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) не має мінімуму потреб для %2$s. Plugin requires WordPress %3$s.', 'plugin' ),
				get_bloginfo( 'version' ),
				$plugin_headers['Name'],
				$requirements['requires']
			). '</p>'
		);
	}

	return true;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *