motivast / wp-cli-seed-command
WP CLI Seed Command 是 WP-CLI 的一个扩展,用于用示例数据填充数据库
Requires
Requires (Dev)
- behat/behat: ^3.5
- consolidation/robo: ^2.0
- phpunit/phpunit: ^7.5
- roots/wordpress: 5.3
- squizlabs/php_codesniffer: ^3.5
- vlucas/phpdotenv: ^3.6
- wp-cli/config-command: ^2
- wp-cli/core-command: ^2
- wp-cli/db-command: ^2
- wp-cli/extension-command: ^2
- wp-coding-standards/wpcs: ^2.2
This package is auto-updated.
Last update: 2024-09-25 16:50:08 UTC
README
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