ブログ

【WordPress】 記事検索クエリのフック

記事検索時のクエリに独自の条件を指定したい場合のフックは下記の通り。

※custom_~ のところは任意の関数名です

・JOIN

add_filter('posts_join', 'custom_join' );

・WHERE

add_filter('posts_where', 'custom_where' );

・ORDER BY

add_filter('posts_orderby', 'custom_orderby' );

カスタムフィールドで並び替えをしたいような場合は

① JOINのフックで$wpdb->posts のIDと、$wpdb->postmeta のIDをINNER JOIN

② WHEREのフックで$wpdb->postmeta のmeta_key で絞って

③ ORDER BYのフックでcase文をつかって並び替え

といった感じ。

WordPressの仕組みを使うのもいいですが、わかる人は直接SQL文を編集してしまうやり方も。