wp post list コマンド情報まとめ
ターミナルの wp post list コマンドについて、オプション情報、出力カラムの意味、wp post get との違い、AIエージェントが実行した場合の危険性を紹介しています。
目次
wp post list とは
wp post list(WP-CLI post list)は、WordPress のデータベースに保存されている投稿データを一覧表示する WP-CLI コマンドです。
投稿タイプ・ステータス・カテゴリ・日付などの条件で絞り込みができるほか、出力フォーマットを CSV や JSON に切り替えてスクリプトと連携させることも可能です。
ファイルを一切変更しない読み取り専用の操作のため、開発環境・本番環境を問わず安心して使えます。
主なオプション
| オプション | 意味 |
|---|---|
--post_type=<type> | 取得する投稿タイプを指定する(例:post, page, product)。デフォルトは post |
--post_status=<status> | 取得するステータスを指定する(例:publish, draft, trash)。複数指定はカンマ区切りで行う |
--fields=<fields> | 出力するカラムをカンマ区切りで指定する。省略すると ID,post_title,post_name,post_date,post_status が表示される |
--format=<format> | 出力形式を指定する(table・csv・json・ids・count)。デフォルトは table |
--numberposts=<number> | 取得件数を指定する。-1 ですべての投稿を取得する |
--orderby=<field> | 並び順の基準カラムを指定する(例:ID, post_date, post_title) |
--order=<order> | 昇順(ASC)または降順(DESC)を指定する。デフォルトは DESC |
--category=<id> | 指定したカテゴリIDに属する投稿のみを取得する |
--s=<keyword> | タイトル・本文・スラッグを対象にキーワード検索する |
オプションは wp_query のパラメータに対応しており、WordPress の投稿取得と同じ粒度で絞り込みができます。
すべてのオプションは wp post list --help で確認できます。
wp post list にて出力されるカラム
実際に wp post list を実行すると、次のような出力が得られます。
+-----+--------------------+--------------------+---------------------+-------------+
| ID | post_title | post_name | post_date | post_status |
+-----+--------------------+--------------------+---------------------+-------------+
| 123 | Hello World | hello-world | 2024-06-01 10:00:00 | publish |
| 122 | Draft Post | draft-post | 2024-05-20 09:30:00 | draft |
| 121 | About Us | about-us | 2024-04-15 08:00:00 | publish |
+-----+--------------------+--------------------+---------------------+-------------+
各カラムの意味は以下の通りです。
| カラム | 意味 |
|---|---|
ID | 投稿の一意な数値ID。他の WP-CLI コマンドへの引数として使う |
post_title | 投稿のタイトル。管理画面の「タイトル」欄に対応する |
post_name | URLに使われるスラッグ。パーマリンクの末尾部分に相当する |
post_date | 投稿の作成日時(YYYY-MM-DD HH:MM:SS 形式) |
post_status | 投稿のステータス(publish・draft・trash・private など) |
--fields オプションで post_author・post_content・post_modified・comment_count などの追加カラムも出力できます。
よく使う組み合わせ
特定の投稿タイプ・ステータスで絞り込む
# 固定ページの公開済み一覧を表示する
wp post list --post_type=page --post_status=publish
# カスタム投稿タイプ "product" の下書き一覧を表示する
wp post list --post_type=product --post_status=draft
# ゴミ箱に入っている全投稿タイプの投稿数を確認する
wp post list --post_status=trash --format=count
投稿タイプとステータスを組み合わせることで、管理画面では確認しにくい状態の投稿を素早く把握できます。
--format=count は件数のみを返すため、スクリプト内の条件分岐に便利です。
CSV・JSON 形式で出力してスクリプトと連携する
# CSV 形式で出力してファイルに保存する
wp post list --post_type=post --post_status=publish --format=csv > posts.csv
# JSON 形式で出力して jq で整形する
wp post list --format=json | jq '.[].post_title'
# ID のみを出力して他コマンドに渡す
wp post list --post_status=draft --format=ids
--format=csv はスプレッドシートへのインポートや他ツールとの連携に、--format=json は jq と組み合わせた高度なフィルタリングに使えます。
--format=ids は投稿IDをスペース区切りで返すため、wp post delete などの引数に直接渡すパイプ処理が可能です。
表示するフィールドを絞って必要な情報だけ取得する
# IDとタイトルだけを表示する
wp post list --fields=ID,post_title
# 更新日時と著者IDも含めて表示する
wp post list --fields=ID,post_title,post_modified,post_author --post_status=publish
# 件数が多い場合は numberposts で制限する
wp post list --numberposts=20 --orderby=post_date --order=DESC
--fields で出力カラムを絞ると、大量の投稿がある環境でも見やすい出力が得られます。
--orderby と --order を組み合わせることで、最新投稿や特定フィールドでソートした一覧を確認できます。
wp post list と wp post get の違い
どちらも投稿データを参照するコマンドですが、対象の粒度と用途が異なります。
| 項目 | wp post list | wp post get |
|---|---|---|
| 対象 | 複数の投稿を一覧表示 | 特定1件の投稿を詳細表示 |
| 指定方法 | 条件(タイプ・ステータス・キーワードなど) | 投稿ID(必須) |
| 取得できる情報 | 指定フィールドのみ(デフォルト5カラム) | 投稿のすべてのフィールド(本文・メタデータ含む) |
| 向いている用途 | 一覧確認・IDの洗い出し・集計 | 特定投稿の詳細確認・本文内容の確認 |
| 出力形式 | table / csv / json / ids / count | table / json / yaml |
「どの投稿が対象か絞り込む」作業には wp post list、「特定の投稿の本文やメタ情報を確認する」作業には wp post get <ID> を使うのが一般的な流れです。
ユースケース
ゴミ箱の投稿を一括削除する前に対象を確認する
# まず対象を確認する
wp post list --post_status=trash --fields=ID,post_title,post_date
# 件数を確認する
wp post list --post_status=trash --format=count
# 問題なければ一括削除する(要注意:不可逆的な操作)
wp post delete $(wp post list --post_status=trash --format=ids) --force
wp post list で対象を事前確認してから削除コマンドに渡すのがベストプラクティスです。
--force を付けた wp post delete はゴミ箱を経由せず完全削除するため、実行前に必ず内容を確認してください。
特定カテゴリの投稿一覧を CSV でエクスポートする
# カテゴリID=5 の公開済み投稿を CSV で出力する
wp post list \
--post_type=post \
--post_status=publish \
--category=5 \
--fields=ID,post_title,post_date,post_modified \
--format=csv \
--numberposts=-1 \
> category5_posts.csv
特定カテゴリの投稿棚卸しや、外部ツールへのデータ移行の準備として活用できます。
--numberposts=-1 で全件取得、--format=csv でそのままスプレッドシートに貼り付けられる形式で出力されます。
AIエージェントが実行しようとした場合
AIエージェントの目的
AIエージェントは主に次のような目的で wp post list を実行しようとすることがあります。
- 削除・更新などの操作を行う前に、対象となる投稿IDや件数を確認するために実行することがあります。
- サイトの投稿データを把握するための初期調査として、タイプ・ステータス別の一覧を取得するために実行することがあります。
- 後続処理(
wp post deleteやwp post updateなど)に渡す投稿IDを--format=idsで取得するために実行することがあります。
危険性
wp post list コマンドは、投稿データの読み取りのみを行いファイルやデータベースを一切変更しません。
危険性はなく、AIエージェントが実行しても問題ありません。ただし --format=ids の出力を wp post delete --force などの破壊的コマンドにそのまま渡すパイプ処理をエージェントが自動構築する場合は、削除対象を人間が事前に確認する手順を必ず挟んでください。