こんにちはエンジニアのマダラです!
今回はワードプレスの汎用プラグインFE Advanced Searchで、同じ記事がなん度も出現してしまう問題に当たったのでその対処法をご紹介します。
FE Advanced Searchとは
FE Advanced Searchはワードプレスの記事検索プラグインで、カスタム投稿にも対応した汎用的な機能のため、かず多くのサイトで採用されている万能プラグインです
有能で少しお高いですが、それに見合うだけの機能は揃っています
今回直面した問題は、このプラグインでカスタム投稿の記事一覧を表示させていた際に、
ページを2ページ目、3ページ目と進んでいくと、前のページで出たはずの記事が再度現れるという状態です
これは明らかにユーザーに意味のない訴求ですし、本来想定した挙動ではありません
この件について、公式に問い合わせフォームで確認したところ、夜に問い合わせれば必ず次の日の朝に即レスで対応方法が帰ってきました!
なんというサポート体制!
充実な対応でこれはこのプラグイン買いで間違い無いですね!
教えてもらったこの問題の修正方法について紹介します!
ランダム順序の場合で記事が重複する場合の修正方法
最新のプラグインで、
プラグインフォルダ内 sort-controller.php というファイルの147行目をコメントアウトして149〜158行目をコメント解除してください。
これにより、ランダム順の場合にページをまたいでも投稿が重複しなくなります。
サンプルコードでは、乱数を生成するmt_srand()関数に0時・8時・16時に変更されるシード値を与えることで乱数を半固定しています。上記時間事にシード値が変わり、並び順もリセットされます。
将来的に、これをユーザー&セッション単位の設定されるようにして標準で実装されるようになるそうです!
記事を降順に並べている場合に重複記事が発生する場合
私の場合はこれでした
投稿日時で次ページ以降に重複がある、ということだと、CSVなどで一括インポートされました場合にこの事例になる可能性があります。
ソート条件である投稿日時が同一の場合は、MySQL上では順序が「不定」となり、ページ送りの都度、投稿が重複表示される可能性があります。
この場合は、
- 投稿日時を少しずつずらしていただくか、
- あるいはプラグインフォルダ内の sort-controller.php 122行目を修正する
という方法を取ることになります!
私の場合は後者を選びました!
$sort_order .= ", {$wpdb->posts}.ID ASC";
投稿日時が同一であった場合に、記事IDでソートを行います。
逆に言えば、phpがちょっと描ける人なら他のパターンの重複記事問題は、サクッと解決できそうですね!
プラグインのファイル自体に修正を入れるのは、WP初心者には少しハードルが高いですが
このように情報を集めて対応すればなんてことはありません
同じ問題で困っている方はぜひ参考にしてください!
ではでは