プラグインや自前でカスタム投稿を登録してみたけど、最終的に使わなくなるケースというのは結構あります。
カスタム投稿を使わなくなった時に、カスタム投稿の定義を削除したり、プラグインを無効化、削除することで、気分的にはスッキリするかもしれません。
ですが、カスタム投稿の記事は消しましたか?
例えば、カスタム投稿を追加する時にCPT UIプラグインを使っている人が多いと思いますが、CPT UIプラグインを削除しても、再度インストールして有効化すれば、記事は復活します。
そうならないためには、カスタム投稿の記事を削除してからカスタム投稿の定義を削除すればスッキリします。ですが、先にカスタム投稿の定義を削除してしまうと、存在が見えなくなるので記事の削除は忘れがちです。
データベースに使っていないデータが残ったままになっても目に見えないのであまり気になりませんが、記事の数が数百もあると、このインパクトは結構大きいのです。
この記事では、データベースから『未使用のカスタム投稿の記事を完全に削除』する方法をまとめておきます。
便利なプラグインもありますが、削除系のプラグインはトラブルがあると怖いので、この記事ではプラグインは使いません。
データベースにカスタム投稿の記事があるのか確認する方法
データベースにあるwp_postsテーブルにWordPressの全ての投稿が含まれています。
post_type列を確認し、その中で”post”や”page”以外の値を探します。これがカスタム投稿のタイプになります。
カスタム投稿タイプの名前は、post_type列の値になります。これを確認することで、使用していないカスタム投稿の名前を特定できます。
SQLクエリは以下のようになります。
SELECT DISTINCT post_type FROM wp_posts;
wp cliを使う場合
wp db query "SELECT DISTINCT post_type FROM wp_posts;"
これで、『記事が存在する』post_typeが調べられます。
記事が存在しないpost_typeは表示されませんが、それは定義しかないということですから、定義を削除すれば何も残っていないということです。
データベースからカスタム投稿の記事を削除する方法
記事が存在するカスタム投稿名がわかったら、記事を削除しましょう。
wp cliを使うと簡単に削除できます。
# 一つだけ削除する場合
wp post delete $(wp post list --post_type='cpt_name1' --format=ids) --force
# 複数を削除する場合(カンマ区切り指定)
wp post delete $(wp post list --post_type='cpt_name1,cpt_name2,cpt_name3' --format=ids) --force
記事を削除した後に、以下のクエリでカスタム投稿名が表示されなくなれば、記事はすべて削除されています。
SQLクエリは以下のようになります。
SELECT DISTINCT post_type FROM wp_posts;
wp cliを使う場合
wp db query "SELECT DISTINCT post_type FROM wp_posts;"
まとめ
WordPressのデータベースは意外と大きなものです。いらない記事を削除することでデータベースは小さくできますので、過去に使っていたカスタム投稿などが残っていないか棚卸して、掃除するとサイトが高速になるかもしれません。