CSVインポート経由で大量に記事を投稿した際に、あとから見たら同じ投稿がダブっていることに気が付きました。
インポート時にダブっている記事はslugに”-2″が付きます。
私の運用の場合、末尾が”-2″で終わるslugになる通常記事は無いので、”-2″で終わるslugは重複記事になります。
ただし、なにぶん数が多いので自動で消せないか調べました。
この記事では、重複記事をプラグインで削除する場合とwp cliを使って削除する場合について説明しています。
プラグインで重複記事を削除する
プラグインの使用も考えましたが同一記事の判定ロジックがイマイチでした。
429 Too Many Requests
プラグインは、記事のタイトルが同じだと重複と判定するようでしたが、今回はslugの重複(slugが”-2″で終わる)で判定してほしかったのです。
今回のケースは、記事のタイトルが同じものが結構あって、それだけで重複と判定されると困ります。
wp cliで重複記事を一括削除する
仕方ないので、重い腰を上げてwp cliで一括削除することにしました。
やっていることはそのままなのですが、wp cli でslug一覧を取得して、末尾に”-2″があるIDとslugを抽出し、post_idだけにcutしてから、 wp cli で一括削除しています。
wp post list --post_type=post \
--fields=ID,post_name \
--format=csv \
| egrep "\-2$" | cut -f1 -d, | xargs wp post delete --force
429 Too Many Requests
429 Too Many Requests