web-dev-qa-db-ja.com

重複したwp_postmetaレコードを削除する

私は多くの重複したwp_postmetaレコード(同じpost_idとmeta_keyを持つ何百ものレコード)を持っていて、mysqlで安全に削除する必要がありますが、postmetaレコードを削除するための効果的な方法はありますか。

wp_postmeta table 

さらなる疑問は、このポストメタの重複を防ぐためのコード実装の作成方法です。どうもありがとう :-)

4
Ivan Slaughter

これはグループ化されたリクエストをかなり複雑にするので、問題を避けるために Cleanup Duplicate Meta pluginを使うことを検討してください。

重複エントリが発生するのは、add_post_meta()の使用法によるものです。 update_post_meta()を使うだけです(メタを作成するためでさえ、それは動作します) - そして、あなたはポストごとに特定の名前を持つ1つのメタフィールドを常に持つでしょう。

3
KAGG Design

重複した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を使用してください。

2
MahdiY