automattic/jetpack-config

Jetpack配置包,用于初始化其他包并配置Jetpack的功能。可以作为Jetpack包使用所有变体的基础。

安装量: 2,069,939

依赖项: 12

建议者: 0

安全性: 0

星标: 2

关注者: 3

分支: 1

类型:jetpack-library


README

允许启用和初始化由其他包提供的Jetpack功能。

用法

将此包作为依赖项添加到您的项目中

composer require automattic/jetpack-config

添加您计划配置的所有其他包

composer require automattic/jetpack-sync
composer require automattic/jetpack-options
composer require automattic/jetpack-my-jetpack

在您的代码中,在或之前于plugins_loaded优先级1初始化配置包

use Automattic/Jetpack/Config;

// Configuring Jetpack as early as plugins_loaded priority 1
// to make sure every action handler gets properly set.
add_action( 'plugins_loaded', 'configure_jetpack', 1 );

function configure_jetpack() {
    $config = new Config();

    foreach (
        array(
            'sync',
            'tracking',
            'tos',
        )
        as $feature
    ) {
        $config->ensure( $feature );
    }
}

将您的包添加到配置类

您可以通过添加一些东西来使用Config类初始化您的包。

配置方法

在您的包类中最好有一个静态的configure方法。该方法将在plugins_loaded钩子中早期调用。这样,您就可以添加自己的plugins_loaded处理器,并使用标准优先级执行它们。

class Configurable_Package {

    public static function configure() {
        add_action( 'plugins_loaded', array( __CLASS__, 'on_plugins_loaded' );
    }

    public static function on_plugins_loaded() {
        self::do_interesting_stuff();
    }

}

功能启用方法

应将启用方法添加到Config类中,并且只能包含您的配置方法调用。


public function enable_configurable_package() {
    Configurable_Package::configure();

    return true;
}

注意,方法名应使用功能slug,在这种情况下,为了简单起见,您的功能slug是configurable_package。当您添加您的功能时,它应该是独特且可识别的,如synctracking

功能slug

为了确保功能由Config类支持,您需要将其slug添加到配置类属性中

    /**
     * The initial setting values.
     *
     * @var Array
     */
    protected $config = array(
        // ...
        'configurable_package' => false,
        // ...
    );

确保选项调用

每个消费者将从自己的Config类实例初始化您的包,并且每个消费者都可以调用$config->ensure( 'your-feature', $options )传递不同的选项。

您的包需要处理这些选项,并在不同消费者传递不同选项时决定如何处理它们。

您可以通过为Config类创建一个ensure_options_{$package_slug}方法来实现这一点。例如


public function ensure_options_configurable_package() {
    $options = $this->get_feature_options( 'configurable_package' );
    Configurable_Package::handle_initialization_options( $options );
	return true;
}

此方法将在不同的消费者“确保”您的功能并传递一些选项时被调用。它将在调用enable_$feature方法之前运行,因此您的包必须准备好接收和处理这些选项,在它初始化之前。到那时,它应该已经接收了消费者传递的所有不同选项,并决定了如何处理它们。

确保调用

最后,您需要添加一个代码块,用于检查您的包是否已加载,并将其标记为初始化

if ( $this->config['configurable_package'] ) {
    $this->ensure_class( 'Configurable_Package' ) && $this->ensure_feature( 'configurable_package' );
}

此代码执行三件事:它检查当前设置是否请求加载您的包。接下来,它检查运行包所需的类是否存在,然后添加初始化您的类的钩子处理器。之后,您可以在Jetpack包消费者应用程序中使用配置包的接口,并按本README的第一部分所示加载您的包。

配置包依赖项

Config包没有任何composer包依赖项。消费者插件必须要求他们需要的包。

在使用包类之前,Config包将使用Config::ensure_class()方法验证该类是否存在。这允许消费者插件使用Config包来启用和初始化Jetpack功能,同时只要求所需的包。

在您的WordPress插件中使用此包

如果您计划在WordPress插件中使用此包,我们建议您使用Jetpack Autoloader作为自动加载器。这将允许与其他使用此包的插件实现最大兼容性。

安全性

需要报告安全漏洞?请访问https://automattic.com/security/或直接访问我们的安全漏洞赏金网站https://hackerone.com/automattic

许可证

jetpack-config遵循GNU通用公共许可证v2(或更新版)