古くから運用されている、メディアサイトなどで、コメントは使ってないが開いており、スパムコメントが数万件になっている。といったことあると思います。本当に不要であれば、無駄なデータでDBの容量を取っているのはもったいないです。そんな場合は、WP-CLIを利用して一気に削除してしまいましょう。
※ もしかしたら、削除が良くない場合もあるかもしれません。くれぐれも実行する場合は、バックアップを取ってから実施することをおすすめします。
WP-CLIを利用したシェルスクリプトを書く
コメント数が少ない場合は wp comment delete $(wp comment list --format=ids) --force
でよいのですが、コメントが多すぎる場合 zsh: argument list too long: wp
といった形でエラーになる場合があります。
なので、シェルスクリプトを利用して分割実施をしてみます。今回はdelete-comment.shとしてみます。
#!/bin/bash
# バッチサイズを設定(例えば100づつ)
batch_size=100
# すべてのコメントIDを取得し、バッチ処理で削除
while true; do
# バッチサイズ分のコメントIDを取得
ids=$(wp comment list --format=ids --number=$batch_size)
# コメントがない場合、ループを終了
if [ -z "$ids" ]; then
echo "すべてのコメントが削除されました。"
break
fi
# コメントを削除
wp comment delete $ids --force
done
これで、sh delete-comment.sh
とすれば実行されて、コメントがすべてなくなります。
コメントの機能自体を停止する
コメントの機能停止する場合は、functions.phpに該当の記述を書くか。プラグインを利用します。