motivast/wp-cli-seed-command

WP CLI Seed Command 是 WP-CLI 的一个扩展,用于用示例数据填充数据库

安装次数: 10,203

依赖项: 0

建议者: 0

安全性: 0

星标: 19

关注者: 2

分支: 0

开放问题: 0

类型:wp-cli-package

1.0.1 2020-11-17 07:26 UTC

This package is auto-updated.

Last update: 2024-09-25 16:50:08 UTC


README

CircleCI

WP CLI Seed Command 是 WP-CLI 的一个扩展,用于用示例数据填充数据库。

为什么?

与高级 WordPress 项目合作需要为其他开发人员或测试脚本提供测试数据。使用 MySQL 备份或导出数据有一些缺点。例如,导入文件或 MySQL 备份中的数据是静态的,您不能快速从 10 随机文章扩展到 100 随机文章,也无法导入本地媒体文件。

这个命令行工具旨在解决这些问题。您可以使用 PHP 编写种子,这为您提供了无限的可能性。

安装

您可以将 WP CLI Seed Command 安装得像其他任何 WP-CLI 扩展一样

wp package install motivast/wp-cli-seed-command

如果您想在本地上安装 WP CLI Seed Command,您可以在项目根目录中使用 composer

composer require motivast/wp-cli-seed-command

入门

WP CLI Seed 提供了两个命令,wp seed 用于用数据填充数据库,wp scaffold seeder 用于快速创建新的种子。要创建主种子,请使用以下命令。

wp scaffold seeder seeder

此命令将在 seeds 目录中创建一个 Seeder.php 文件,内容如下。

<?php

use Motivast\WP_CLI\Seed\AbstractSeeder;

class Seeder extends AbstractSeeder
{
	/**
	 * Run the database seeds.
	 *
	 * @return void
	 */
	public function run()
	{
		//
	}
}

run 方法内部执行的所有内容都将用于数据库填充。在它内部,您可以添加任何 PHP 代码,包括 WordPress 函数。让我们更改一些 WordPress 选项并添加基本页面。

<?php

use Motivast\WP_CLI\Seed\AbstractSeeder;

class Seeder extends AbstractSeeder
{
	/**
	 * Run the database seeds.
	 *
	 * @return void
	 */
	public function run()
	{
		update_option('blogname', 'WP CLI Seed Command');
		update_option('blogdescription', '');

		$defaults = [
			'post_type' => 'page',
			'post_status' => 'publish',
		];

		$home_id = wp_insert_post( wp_parse_args( [
			'post_title' => 'Home'
		], $defaults ) );

		$about_id = wp_insert_post( wp_parse_args( [
			'post_title' => 'About'
		], $defaults ) );

		$contact_id = wp_insert_post( wp_parse_args( [
			'post_title' => 'Contact'
		], $defaults ) );

 		// Update homepage
		update_option( 'show_on_front', 'page' );
		update_option( 'page_on_front', $home_id );
	}
}

现在,您可以通过执行以下命令导入您的种子。

wp seed

您的 WordPress 选项应该会更改,并应创建新页面。

分割文件

当您的项目增长时,您可能希望将种子分割成多个文件。根据上面的示例,您可以将其分割成两个文件。创建 'Options.php' 和 'Pages.php' 种子。

wp scaffold seeder options
wp scaffold seeder pages
<?php

use Motivast\WP_CLI\Seed\AbstractSeeder;

class Options extends AbstractSeeder
{
	/**
	 * Run the database seeds.
	 *
	 * @return void
	 */
	public function run()
	{
		update_option('blogname', 'WP CLI Seed Command');
		update_option('blogdescription', '');
	}
}
<?php

use Motivast\WP_CLI\Seed\AbstractSeeder;

class Pages extends AbstractSeeder
{
	/**
	 * Run the database seeds.
	 *
	 * @return void
	 */
	public function run()
	{
		$defaults = [
			'post_type' => 'page',
			'post_status' => 'publish',
		];

		$home_id = wp_insert_post( wp_parse_args( [
			'post_title' => 'Home'
		], $defaults ) );

		$about_id = wp_insert_post( wp_parse_args( [
			'post_title' => 'About'
		], $defaults ) );

		$contact_id = wp_insert_post( wp_parse_args( [
			'post_title' => 'Contact'
		], $defaults ) );

 		// Update homepage
		update_option( 'show_on_front', 'page' );
		update_option( 'page_on_front', $home_id );
	}
}

新创建的种子必须在主 Seeder.php 文件中包含和执行。将您现有的 Seeder.php 更改为处理新种子。

<?php

use Motivast\WP_CLI\Seed\AbstractSeeder;

require_once __DIR__ . '/Options.php';
require_once __DIR__ . '/Pages.php';

class Seeder extends AbstractSeeder
{
	/**
	 * Run the database seeds.
	 *
	 * @return void
	 */
	public function run()
	{
		$this->call(Options::class);
		$this->call(Pages::class);
	}
}

贡献

请在提交拉取请求之前确保阅读贡献指南

感谢所有为 WP-CLI Seed Command 做出贡献的人!

许可证

该项目受 MIT 许可证的许可。

版权(c)2019 年至今,Motivast