erikgreasy/wp-db-migrations

该软件包最新版本(0.1.1)没有提供许可证信息。

受Laravel框架启发的WordPress数据库迁移。

0.1.1 2022-10-21 19:40 UTC

This package is not auto-updated.

Last update: 2024-09-23 01:13:23 UTC


README

受Laravel框架启发的WordPress数据库迁移。

安装

您可以通过几种方式安装WP DB迁移

1. 安装为mu-plugin。

下载最新版本的ZIP文件并将其解压缩到您的mu-plugins中。您需要一个类型的必须使用插件自动加载器才能使此操作生效,例如Bedrock Autoloader

2. 安装为常规插件

下载最新版本的ZIP文件并将其解压缩到您的plugins中,或者通过wp-admin插件部分安装。

入门

注册迁移文件夹

当使用WP CLI命令运行迁移时,插件会扫描所有注册为“迁移文件夹”的文件夹。迁移文件夹基本上是您插件/主题中的一个文件夹,其中存储着您的迁移。

插件支持注册多个迁移文件夹,因此您可以针对多个插件使用单独的迁移文件夹。

要注册新的迁移文件夹,请使用以下WP过滤器

add_filter('dbmigrator_migrations_dirs', function($migrationDirs) {
    $migrationDirs[] = __DIR__ . '/my_plugin_migrations';

    return $migrationDirs;
});

创建您的第一个迁移文件

迁移文件只是一个遵循特定结构的PHP文件,因此插件可以扫描此文件并运行。

迁移结构

简单的示例迁移可能如下所示

<?php
// 001_reviewplugin_create_test_table.php

use DbMigrator\Migration;

return new class extends Migration
{
    public function up()
    {
        $tableName = $this->getPrefixedTable('test');
        $charset_collate = $this->wpdb->get_charset_collate();

        $sql = "CREATE TABLE $tableName (
            id int(11) NOT NULL auto_increment,
            name varchar(60) NOT NULL,
            UNIQUE KEY id (id)
        ) $charset_collate;";

        $this->wpdb->query($sql);
    }
};

从上面的示例中可以得出以下几个重要点

  • 我们使用PHP 匿名类,它扩展了基Migration类。此基类提供了一些用于与wpdb一起使用的方法和属性。
  • up()方法是必需的,它包含所有迁移逻辑
  • 迁移文件的命名约定如下
    • 使用索引(例如001)作为迁移的前缀
    • 使用某种类型的标识符(例如reviewplugin)
    • 文件名剩余部分应描述迁移执行的操作
    • 使用snake_case以获得更好的可读性

创建迁移文件

您可以手动创建迁移文件,或者可以使用WP CLI命令生成它们

wp migrator make:migration 001_your_migration_name

它将在命令运行的目录中创建具有指定名称的空迁移。

运行您的迁移

现在您已准备好运行迁移。要运行迁移,请使用WP CLI命令

wp migrator migrate

将此命令添加到您的应用程序的部署脚本中,或手动运行该命令。

或者,您可以直接运行迁移而无需使用WP_CLI,通过调用Migrator方法。例如,这可以在插件激活期间完成

register_activation_hook(__FILE__, function() {
    (new \DbMigrator\Migrator())->migrate();
});