WordPressのカスタムフィールドを便利に使えるプラグインとしてACFが有名です。
簡単に便利なカスタムフィールドを作れる反面、カスタムフィールドは各記事のpost_metaに保存されるので、記事が増えてくるとデータベースが肥大化してしまう問題が出てきます。
ACFで作成されたカスタムフィールドは、ACFのカスタムフィールドの定義を削除してもデータベースから削除されません(これは仕様です)。
サイトを運用していて記事が増えてきたときに、あまりにデータベースのpost_metaが大きくなり、サイト運用に支障が出てくることもあります。その結果、ACFを使わない選択をしても、既に存在するカスタムフィールドはそのまま残ってしまいますのでデータベースから削除されません。
この記事では、Wordpressで使用しなくなったカスタムフィールドを簡単に削除する方法をご紹介します。
【公式】ACFが作ったカスタムフィールドが消える条件とは?
記事を削除すれば、記事に関連したカスタムフィールドは削除されます。
記事を削除しない場合は、カスタムフィールドの定義をACFから削除しても消えません。
カスタムフィールドを削除する手順
カスタムフィールドの使用状況を確認する
DBを直接のぞいてもいいのですが、edit-custom-fieldsプラグインを使うのが簡単です。
このプラグインを使うと、カスタムフィールド名と使用されている数が出てきます。
直接削除できるので、記事の数が少ない時にはそちらを利用する方がよいです。
ただし、記事数が10000を超える場合は、固まります。
データベースから直接削除する
カスタムフィールド名が確認できたら、データベースから直接カスタムフィールドを削除します。
カスタムフィールドは記事の数だけ独立してあるので、手動でポチポチ削除してもきりがありません。
バックアップを取る
DBを直接操作するので、バックアップは必須です。
バックアップにAll in One Migrationを使うこともできますが、カスタムフィールドが大量な場合、All in One Migrationが固まりました。
素直に、updraftplusを使う方が良いでしょう。

カスタムフィールドを削除するDBクエリ
DBクエリで一発削除します。
一度、LISTで確認する方が安全でしょう。
LIST * FROM wp_postmeta WHERE meta_key = "series_0_title"
DELETE FROM wp_postmeta WHERE meta_key = "series_0_title"
wp cliを使う場合
wp db query 'DELETE FROM wp_postmeta WHERE meta_key = "series_0_title"' --quiet
まとめ
カスタムフィールドを使わなければよかったと思い始めたのは、記事の数が10000を超えたあたりからです。そうなると、プラグインで色々するときに固まりやすくなります。じゃぁプラグインで消すかとなりますが、そのプラグインがまた固まるという悪循環になりました。
DBクエリで消してみたら、今までの苦労は何だったのかと思うほど、一瞬で消えてくれました。
ACFで大量にカスタムフィールドを作ってpost_metaが肥大化してしまったときにはこの記事を参考にしてみてください。