2重投稿を削除する
RSSから読み込んだ内容を投稿として保存するサイトを作ったのだが更新日時の関係なのか、同じものが複数投稿される現象が発生。
手動で消すのも何なので、同じタイトルの投稿が複数あったら自動的に削除するようにしてみた。
先ずどこで動かすかということで、テーマに含まれる functions.php で action を追加。
実際のアクションの内容は、同じタイトルをグループ化して最小のIDを持つレコード以外を削除する感じ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function duplecate_delete() { global $wpdb; $wpdb->query( "DELETE FROM {$wpdb->prefix}posts WHERE {$wpdb->prefix}posts.ID NOT IN ( SELECT min_id FROM ( SELECT MIN(t1.ID) AS min_id FROM {$wpdb->prefix}posts AS t1 WHERE t1.post_type = 'post' GROUP BY t1.post_title ) AS t2 ) AND {$wpdb->prefix}posts.post_type = 'post'"); } add_action('init', 'duplecate_delete', 1); |
テーマを更新すると functions.php も初期化される場合もあるので備忘録として残しておこう。