elhardoum/wp-php-compat-check

帮助在运行插件前检查PHP和WordPress的兼容性。

0.2 2018-03-22 15:14 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:52:45 UTC


README

帮助在运行插件前检查PHP和WordPress的兼容性。

您可以将主WordPress插件代码包裹在这个助手函数中,并指定插件应运行的最低PHP版本,以及可选的最低WordPress版本,然后如果所有检查都符合且环境兼容,插件应该能正常工作而不出现致命错误。

这个助手函数至少需要PHP 5.0,并且应该适用于多站环境。

用法

在您的主插件文件中,例如 wp-content/plugins/my-plugin/my-plugin.php,引入这个兼容类

require_once 'wp-php-compat-check/wp-php-compat-check.php';

对于Composer用户

composer require elhardoum/wp-php-compat-check

然后,请确保将所有主文件代码(当然不包括插件头部注释)复制到 then 方法中

CompatCheckWP::check(
    // ... arguments
)->then(function(){
    // [ ... ] Your plugin code goes here.
});

以下是一个示例

<?php
/*
Plugin Name: Tweak MailChimp Feeds RSS
Plugin URI: https://samelh.com/blog
Description: Tweak MailChimp RSS Feeds to add the featured image, excerpt and a read more button.
Author: Samuel Elh
Version: 0.1
Author URI: https://go.samelh.com/buy-me-a-coffee
*/

defined ( 'ABSPATH' ) || exit ( 'Direct access not allowed.' . PHP_EOL );

require_once 'wp-php-compat-check/wp-php-compat-check.php';

CompatCheckWP::check(array(
    'php_version' => 7.0,
    'deactivate_incompatible' => true,
    'wp_version' => 4.2,
))->then(function(){
    $GLOBALS['feed_ignore_categories'] = array( 
        // [...]
    );

    function filter_the_content_feed( $content ) {
        // [...]
    }


    function pre_get_posts_mailchimp_rss($query) {
        // [...]
    }

    // [...]
});

以下是一个示例,这次不使用 闭包,因为从PHP 5.3开始支持闭包

<?php
/*
Plugin Name: My Plugin
Plugin URI: https://samelh.com/blog
Description: My Plugin.
Author: Samuel Elh
Version: 0.1
Author URI: https://go.samelh.com/buy-me-a-coffee
*/

function my_plugin_runs_here() {
    // [ ... ] my plugin code..
}

require_once 'wp-php-compat-check/wp-php-compat-check.php';

CompatCheckWP::check(array(
    'php_version' => 7.0,
    'deactivate_incompatible' => true,
    'wp_version' => 4.2,
))->then('my_plugin_runs_here');

最后一个示例,如果您不想使用 then 方法,可以使用 isCompatible 方法来解决问题

$is_compatible = CompatCheckWP::check(array(
    'php_version' => 7.0,
    'deactivate_incompatible' => true,
    'wp_version' => 4.2,
))->isCompatible();

if ( $is_compatible ) { /* ... */ }

选项

以下称为选项,您可以将其传递给 CompatCheckWP 类的 check 方法(CompatCheckWP::check( array( ...options ) )

php_version:插件应工作的最低PHP版本,如有需要。

wp_version:插件应工作的最低WordPress版本,如有需要。

deactivate_incompatible:如果不兼容,立即停用插件。否则保持激活状态,但插件代码将不会运行。

error_message:自定义不兼容的错误信息。默认为:以下插件由于兼容性错误无法激活:插件名/插件名.php。 [PHP >= XX: ✓, WP >= XX: ×]

plugin_file:可选,传递一个字符串形式的插件文件,格式与该函数返回的格式相同: plugin_basename(例如 'plugin_file' => plugin_basename(MY_PLUGIN_FILE) )。如果您从主插件文件调用类而没有传递此参数,则插件文件将从调试回溯中程序化地提取,否则如果从另一个文件调用,则肯定失败,并且您需要传递此参数。

php_version_operator:默认情况下,检查PHP版本要求的运算符是 >=

wp_version_operator:默认情况下,检查WP版本要求的运算符是 >=