WP-CLIを利用し、投稿日が特定の日より以前で、且つカテゴリーhogeに入っているものを非公開にする。

過去記事を一度に非公開にしたいときありますね。その場合にはこのコマンドが利用できます。

とりあえずバックアップ

もしかしすると、うまくいかないときもあるかもなので、一旦バックアップします。

もちろんいきなり本番ではなく、開発環境などで試してから作業して下さい。

$ 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