過去記事を一度に非公開にしたいときありますね。その場合にはこのコマンドが利用できます。
とりあえずバックアップ
もしかしすると、うまくいかないときもあるかもなので、一旦バックアップします。
もちろんいきなり本番ではなく、開発環境などで試してから作業して下さい。
$ wp db export ~/backupdb-yyyy-mm-dd.sql
条件の投稿のリストを確認する
まずは、データベース自体に操作は行わず参照だけしてみましょう。
下記は、カテゴリーのhogeで且つ、投稿日が2024-06-02より過去のもの記事群の、IDとタイトルとスタータスを一覧します。
wp post list --category_name=hoge --date_query='{"before":"2024-06-02"}' --fields=ID,post_title,post_status --format=csv
条件の投稿のステータスを非公開に変える
上記のリストが確認できたら、ステータスの変更を実行します。
wp post update $(wp post list --category_name=hoge --date_query='{"before":"2024-06-02"}' --field=ID --format=ids) --post_status=private
ステータス変更ができたかどうかの確認
最後に、上記コマンドなどを実行し、作業が問題なく終えられたかを確認します.
wp post list --category_name=hoge --date_query='{"before":"2024-06-02"}' --fields=ID,post_title,post_status --format=csv
カテゴリーと日付のフィルターを外して、他に影響が出ていないことも確認しておくと、なお良いです。
wp post list --fields=ID,post_title,post_status --format=csv
変更後に失敗が見つかって戻すに戻す場合
あらかじめ取得しておいたバックアップを元に戻します。
wp db import ~/backupdb-yyyy-mm-dd.sql