timelsass / wp-php-version-check
Composer 包用于验证 WordPress 和 PHP 版本是否满足最低版本要求。
This package is auto-updated.
Last update: 2024-09-06 09:26:26 UTC
README
Composer 包用于验证 WordPress 和 PHP 版本是否满足最低版本要求。
跳转到部分
为什么?
每次我需要这个功能时,我都没有真正看到任何可靠的包,所以我决定自己制作一个以备将来使用。我找到的大多数包在版本要求不满足时不会停用插件,它们在激活后留下成功的管理员通知和错误管理员通知,它们不支持干净的 WP-CLI 激活,并且只检查 PHP 版本或 WordPress 版本,而不是两者。特别感谢 Dan Bissonnet 的 wp-version-check,它是这个项目的灵感来源,但不幸的是已经3+年没有更新了。不过,最重要的是——我想创建一个能满足我需求的包,并假设其他人也可能在寻找相同的东西! :)
它做什么?
如果环境不满足最低的 PHP 或 WordPress 版本要求,插件将被停用,并在管理员仪表板上显示错误管理员通知。通知会告知用户最低要求,以及他们当前的 WordPress 和 PHP 版本,以便他们可以更改环境以满足插件的版本要求。如果用户通过 WP-CLI 激活插件,则会显示 WP-CLI 警告,告知他们相同的信息。然后插件能够使用生成的钩子名称在 WordPress 初始化钩子中运行其代码,或者如果不需要初始化,可以调用可调用的方法来运行其初始化代码。
安装
使用 composer,您可以快速开始
$ composer require timelsass/wp-php-version-check
使用
我们不会使用此包的自动加载器,因为 WordPress 支持最低的 PHP 5.2,而这个只是一个单独的类。在您的代码中,您可以在标题之后添加到主插件文件中,如下所示
if ( ! class_exists( 'Wp_Php_Version_Check' ) ) { require plugin_dir_path( __FILE__ ) . 'vendor/timelsass/wp-php-version-check/class-wp-php-version-check.php'; }
初始化方法接受四个参数
Wp_Php_Version_Check::init( $plugin, $wp_version, $php_version (, $callback, ...$args) );
$plugin- 相对于插件目录的主插件文件。通常您会使用:plugin_basename( __FILE__ )。$wp_version- 您的插件需要工作的最低 WordPress 版本。$php_version- 您的插件需要工作的最低 PHP 版本。$callback- (可选) 可调用的方法。格式应与其他可调用的格式相同。...$args- (可选) 传递给可调用的方法的任何数量参数。如$arg1, $arg2, $arg3等。
您只需使用必要的参数初始化版本检查,如下所示
Wp_Php_Version_Check::init( plugin_basename( __FILE__ ), '4.7', '5.3' );
这将为您处理版本检查部分,因此您的下一步是添加一个钩子告诉 WordPress 初始化您的插件的实际代码。
钩子名称基于 $plugin 动态生成。如果您有一个名为 "example-plugin" 的插件,则生成的钩子将是 "example-plugin:init"。
以下代码演示了如何在一个匿名函数中初始化一个名为 "example-plugin" 的插件的代码(通过钩子传递的匿名函数需要 PHP 5.3+)
add_action( 'example-plugin:init', function() { wp_die( 'Passes Version Requirements.' ); });
将初始化代码添加到init钩子可能不是最佳选择,因此提供了一个可选参数 $callback。回调期望一个可调用的方法,否则将默认将钩子添加到init。可调用格式与WordPress中其他回调/可调用方法相同,并且通过在回调参数之后包含它们来传递额外参数。
以下示例展示了如何实现带有2个必需参数的回调。
Wp_Php_Version_Check::init( plugin_basename( __FILE__ ), '4.7', '5.3', 'example_plugin_init', true, 'The plugin has been initialized!' ); function example_plugin_init( $passed, $message ) { if ( $passed ) { wp_die( $message ); } }
示例
这是一个完整示例,展示了如何对WordPress 4.0和PHP 5.6进行版本检查,并在WordPress init钩子上运行插件初始化代码。
/** * Plugin Name: Example Plugin * Plugin URI: https://github.com/timelsass/wp-php-version-check * Description: This is an example of using Wp_Php_Version_Check class. * Version: 1.0.0 * License: GPLv2 or later */ // Prevent direct calls. defined( 'WPINC' ) ? : die; // Load the Wp_Php_Version_Check file and make sure that the class doesn't exist first. if ( ! class_exists( 'Wp_Php_Version_Check' ) ) { require plugin_dir_path( __FILE__ ) . 'vendor/timelsass/wp-php-version-check/class-wp-php-version-check.php'; } // Initalize the version checking. This checks that the user has at least WordPress v4.0 and PHP v5.6. Wp_Php_Version_Check::init( plugin_basename( __FILE__ ), '4.0', '5.6' ); // Initalize our core plugin functionality in the example-plugin:init hook. add_action( 'example-plugin:init', 'example_plugin_load' ); /** * Kicks off our core plugin code. */ function example_plugin_load() { wp_die( 'Example plugin passes the version check requirements! Woohoo!' ); }