oblak/wp-plugin-installer

简化WordPress插件的安装和激活

v2.1.3 2024-02-09 21:39 UTC

README

📦 WordPress插件安装器/激活器

简化WordPress插件的安装和激活。

Packagist Version Packagist PHP Version semantic-release: angular

Code Climate maintainability Release

GitHub Packagist Downloads

亮点

  • 基于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