Summery Summery
Validates the plugin requirements for WordPress version and PHP version.
Syntax Syntax
Description Description
Uses the information from Requires at least
and Requires PHP
headers defined in the plugin’s main PHP file.
If the headers are not present in the plugin’s main PHP file, readme.txt
is also checked as a fallback.
Parameters Parameters
- $plugin
-
(Required) Path to the plugin file relative to the plugins directory.
Return Return
(true|WP_Error) True if requirements are met, WP_Error on failure.
Source Source
File: wp-admin/includes/plugin.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; }
Advertisement
Changelog Changelog
Version | Description |
---|---|
5.3.0 | Added support for reading the headers from the plugin's main PHP file, with readme.txt as a fallback. |
5.2.0 | Introduced. |