Advanced Custom Fieldsの重複取得バグ

WEB開発
この記事は約2分で読めます。
スポンサーリンク

post_statusフィールドでacf-disabled があると
post_dateで並び替えの際、
公開日が全く同じものがあるとアーカイブのページ送りで重複して取得されてしまうデータが存在する
以下に生成されたSQLクエリを記載した。

post_dateが同じ時間だと、並び替えがpost_dateで行われているため予期しないならびになる可能性がある。
ページ切り替わるあたりに同時刻のデータがあるとこのようになる。
対策としては、被らないように1秒でもずらしておけば問題はない。が、そもそも作りが良くないので、postのidでソートもしておくべきなんじゃないか?

//1ページ
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'case' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled') ORDER BY wp_posts.post_date DESC LIMIT 0, 12

//2ページ
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'case' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled') ORDER BY wp_posts.post_date DESC LIMIT 12, 12

コメント

タイトルとURLをコピーしました