開発やデザイン確認のために、カスタム投稿タイプへ大量のテストデータを投入したいケースはよくあります。
この記事では、WP-CLIを使って、ダミーカテゴリごとにダミー投稿を10件ずつ追加する方法を紹介します。
この記事でやること
- カスタム投稿タイプ:
sample_post
- カスタムタクソノミー:
sample_category
- WP-CLIコマンドでカテゴリごとに10件のダミー投稿を追加
- 本文は自然な日本語ダミーテキスト
- 投稿日は過去30日以内のランダム
--dry-run
オプションで確認モードに対応
ファイル構成例
以下の構成で wp-cli/
ディレクトリにカスタムコマンドを配置し、mu-plugins
に読み込み用ファイルを追加します。
wp-content/
├── mu-plugins/
│ └── wp-cli-commands.php ← WP-CLIコマンド読み込み用
└── wp-cli/
├── sample-categories.php ← カテゴリ同期コマンド(例)
└── sample-dummy.php ← ダミーデータ作成コマンド
mu-plugins のエントリーポイント
mu-plugins/wp-cli-commands.php
:
<?php
// mu-plugins/wp-cli-commands.php
if (defined('WP_CLI') && WP_CLI) {
require_once WP_CONTENT_DIR . '/wp-cli/sample-categories.php';
require_once WP_CONTENT_DIR . '/wp-cli/sample-dummy.php';
}
WP-CLIコマンド本体
wp-cli/sample-dummy.php
:
<?php
// wp-cli/sample-dummy.php
class SampleDummyCommand {
/**
* ダミーカテゴリごとに10件の投稿を自動作成
*
* ## OPTIONS
* [--dry-run]
* : 実際に作成せず、処理内容のみを表示
*
* ## EXAMPLES
* wp sample-dummy create
* wp sample-dummy create --dry-run
*
* @when after_wp_load
*/
public function create($args, $assoc_args) {
$dry_run = isset($assoc_args['dry-run']);
// 投稿タイプ・タクソノミー(ダミー)
$taxonomy = 'sample_category';
$post_type = 'sample_post';
// 自然な日本語のダミー本文(複数パターン)
$dummy_texts = [
"この投稿はテスト用に作成されたダミーコンテンツです。実際の情報は後日掲載されます。",
"こちらはシステム動作確認用の記事です。内容は仮のものですのでご注意ください。",
"この投稿はダミーデータです。正式な情報は準備中です。",
"レイアウト確認用のダミー記事です。実際のコンテンツとは異なります。",
"この情報はテスト用に自動生成されています。後ほど更新予定です。"
];
// カテゴリ一覧を取得
$terms = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);
if (empty($terms) || is_wp_error($terms)) {
WP_CLI::error('カテゴリが見つかりません。先にカテゴリを作成してください。');
return;
}
foreach ($terms as $term) {
WP_CLI::log("カテゴリ: {$term->name} ({$term->slug}) にダミー投稿を10件追加");
for ($i = 1; $i <= 10; $i++) {
$title = "{$term->name} テスト投稿 No.{$i}";
$content = $dummy_texts[array_rand($dummy_texts)];
// 過去30日以内でランダムな投稿日を生成
$timestamp = strtotime('-' . rand(0, 30) . ' days');
$post_date = date('Y-m-d H:i:s', $timestamp);
$post_date_gmt = get_gmt_from_date($post_date);
if ($dry_run) {
WP_CLI::log("[DRY-RUN] Add Post: {$title} | Date: {$post_date}");
} else {
$post_id = wp_insert_post([
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
'post_type' => $post_type,
'post_date' => $post_date,
'post_date_gmt' => $post_date_gmt,
]);
if (!is_wp_error($post_id)) {
wp_set_object_terms($post_id, [$term->term_id], $taxonomy);
WP_CLI::log("Added: {$title} (ID: {$post_id}) | Date: {$post_date}");
} else {
WP_CLI::warning("Failed to add post: {$title}");
}
}
}
}
WP_CLI::success($dry_run ? 'Dry-run completed.' : 'ダミーデータの追加が完了しました。');
}
}
WP_CLI::add_command('sample-dummy', 'SampleDummyCommand');
実行例
シミュレーション(投稿は追加しない)
wp sample-dummy create --dry-run
本番実行(カテゴリごとに10件)
wp sample-dummy create
まとめ
- WP-CLIを活用すれば、開発用ダミーデータを一括作成できる
- 投稿本文は自然な日本語で複数パターンをランダムに適用
- 投稿日をランダム化して、ソートや一覧表示の確認に最適
コメント