【WordPress】カスタムクエリで重複する投稿を除外する方法|posts_distinct

WordPressではページを表示する際に、データベースに対してSQLクエリを発行しデータを取得しますが、ページに表示する情報をカスタマイズしたい場合に、クエリを修正するカスタムクエリを利用する方法があります。

そのカスタムクエリを利用する際に、データベースのテーブルを結合すると、クエリの結果に同じレコードが含まれることがあります。

その場合、検索結果ページなどで投稿の一覧を表示した際に、条件によっては表示結果に投稿が重複することがあります。

今回は、そのようなカスタムクエリの結果に重複したレコードがある場合に、フィルターフックで重複を除外する方法となります。

カスタムクエリの検索結果で重複する投稿を除外する例

カスタムクエリの結果の重複したレコードを除くには、フィルターフックのposts_distinctを利用します。

以下、例となりfunctions.phpに記述します。例では、検索結果のページの場合に、重複したレコードを除外しています。

function my_posts_distinct() {
    if ( is_search() ) {
        return "DISTINCT";
    }
}
add_filter( 'posts_distinct', 'my_posts_distinct' );

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは、項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

Twitterで返信する場合はこちらから。