timelsass/wp-php-version-check

Composer 包用于验证 WordPress 和 PHP 版本是否满足最低版本要求。

1.1.0 2017-05-03 22:51 UTC

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) );
  1. $plugin - 相对于插件目录的主插件文件。通常您会使用:plugin_basename( __FILE__ )
  2. $wp_version - 您的插件需要工作的最低 WordPress 版本。
  3. $php_version - 您的插件需要工作的最低 PHP 版本。
  4. $callback - (可选) 可调用的方法。格式应与其他可调用的格式相同。
  5. ...$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!' );
}