oblak / wp-plugin-installer
简化WordPress插件的安装和激活
v2.1.3
2024-02-09 21:39 UTC
Requires
- php: >= 8.0
- automattic/jetpack-constants: ^2
- oblak/admin-notice-manager: ^2
- woocommerce/action-scheduler: ^3.7
Requires (Dev)
Suggests
- automattic/jetpack-autoloader: Allow for better interoperability with other plugins that use this package.
- dev-master
- v2.1.3
- v2.1.2
- 2.1.1
- 2.1.0
- 2.0.4
- 2.0.3
- 2.0.2
- 1.3.0
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.0
- dev-renovate/actions-checkout-4.x
- dev-renovate/woocommerce-action-scheduler-3.x-lockfile
- dev-renovate/automattic-jetpack-constants-2.x-lockfile
- dev-renovate/ergebnis-composer-normalize-2.x-lockfile
- dev-renovate/actions-cache-4.x
- dev-renovate/actions-cache-3.x
- dev-develop
This package is auto-updated.
Last update: 2024-09-25 20:09:04 UTC
README
📦 WordPress插件安装器/激活器
简化WordPress插件的安装和激活。
亮点
- 基于WooCommerce的安装和激活流程。
- 自动更新插件和数据库模式版本。
- 处理数据库表创建和更新(模式强制)。
- 提供WP-CLI命令以进行手动更新和数据库表创建/验证。
- 易于扩展
安装
我们仅正式支持通过composer安装
通过composer
composer require oblak/wp-plugin-installer
基本用法
Base_Plugin_Installer
是一个抽象
的单例类,可以扩展以创建插件安装器类。该类负责安装和激活插件,并更新插件和数据库模式版本。您需要扩展它并实现set_defaults()
方法,该方法负责设置类的默认值。
如果您的插件需要非wp数据库表,您需要实现get_schema()
方法,并将has_db_tables
属性设置为true
,以便安装器可以创建和更新表。
类依赖于Action Scheduler在后台运行更新回调。如果您的插件使用Action Scheduler或依赖于另一个使用Action Scheduler的插件,则可以跳过激活步骤。
1. 定义您的安装器类
<?php namespace Vendor\My_Plugin; use Oblak\WP\Base_Plugin_Installer; class My_Plugin_Installer extends Base_Plugin_Installer { /** * Singleton instance * * Since we're inheriting from a singleton class, we need to define this property. * * @var My_Plugin_Installer */ protected static $instance; /** * Set the installer defaults. */ protected function set_defaults() { $this->name = 'My Plugin'; // Plugin name. $this->slug = 'my-plugin'; // Plugin slug. $this->version = '1.0.0'; // Plugin version (current). $this->db_version = '1.0.0'; // Database schema version (current). $this->has_db_tables = true; // Does the plugin have database tables? } /** * Get the database schema. * * @return string The database schema. */ protected function get_schema() { global $wpdb; $collate = ''; if ( $wpdb->has_cap( 'collation' ) ) { $collate = $wpdb->get_charset_collate(); } return " CREATE TABLE `{$wpdb->prefix}my_plugin_table` ( ID bigint(20) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, created_at datetime NOT NULL, PRIMARY KEY (ID) ) {$collate} "; } }
2. Action Scheduler激活
require_once __DIR__ . 'vendor/woocommerce/action-scheduler/action-scheduler.php';
3. 包含自动加载文件
require_once __DIR__ . 'vendor/autoload.php';
4. 实例化安装器类
<?php use Vendor\My_Plugin\My_Plugin_Installer; My_Plugin_Installer::get_instance()->init();
高级用法
请参阅文档。
贡献
我们欢迎所有人的贡献。我们有一些贡献指南,以帮助您开始。
致谢和特别感谢
本项目由Oblak Studio维护。
特别感谢Automattic的团队成员,他们创建了WooCommerce,本项目基于该安装器,并感谢Action Scheduler,它使我们能够在后台运行更新回调。
许可证
本项目采用GNU通用公共许可证v2.0。