私は多くの重複したwp_postmetaレコード(同じpost_idとmeta_keyを持つ何百ものレコード)を持っていて、mysqlで安全に削除する必要がありますが、postmetaレコードを削除するための効果的な方法はありますか。
さらなる疑問は、このポストメタの重複を防ぐためのコード実装の作成方法です。どうもありがとう :-)
これはグループ化されたリクエストをかなり複雑にするので、問題を避けるために Cleanup Duplicate Meta pluginを使うことを検討してください。
重複エントリが発生するのは、add_post_meta()
の使用法によるものです。 update_post_meta()
を使うだけです(メタを作成するためでさえ、それは動作します) - そして、あなたはポストごとに特定の名前を持つ1つのメタフィールドを常に持つでしょう。
重複したwp_postmetaレコードを削除します。
DELETE FROM `wp_postmeta` WHERE `meta_id` NOT IN (SELECT * FROM (SELECT MAX(`pm`.`meta_id`) FROM `wp_postmeta` pm GROUP BY `pm`.`post_id`, `pm`.`meta_key`) x)
重複するpostmetaが作成されないようにするには、update_post_meta
の代わりにadd_post_meta
を使用してください。