ワードプレスの検索結果を投稿日、更新日、ランダム、コメント数、スラッグなどで並べ替えする方法を解説いたします。
ワードプレスの検索結果を様々な方法で並べ替え
ワードプレスのお使いのテーマのfunctions.phpに下記のコードを追加することでワードプレスの検索結果をいろいろな方法で並べ替えすることが可能です。
1 投稿日が新しい順に検索結果を表示
※ワードプレスはデフォルトで投稿日が新しい順に検索結果を表示しますので、下記のコードを追加しても検索結果の並び順は変わりません。
function My_order_search_result( $orderby ){ global $wpdb; if(!is_admin() && is_search()) { $orderby = "$wpdb->posts.post_date DESC"; } return $orderby; } add_filter('posts_orderby','My_order_search_result');
上記コードはposts_orderbyフィルタで検索結果の並び替えをする処理に割り込んで !is_admin() && is_search() で管理画面ではない、かつ検索結果の場合に、post_date=日付 の DESC(大きい値から小さい値へ) 並び替えをするように指定したコードとなります。
2 投稿日が古い順に検索結果を表示
この場合DESC の部分をASC(小さい値から大きい値へ)に変えると古い順に検索結果が表示されます。
function My_order_search_result( $orderby ){ global $wpdb; if(!is_admin() && is_search()) { $orderby = "$wpdb->posts.post_date ASC"; } return $orderby; } add_filter('posts_orderby','My_order_search_result');
3 ランダムに検索結果を表示
下記のようなコードにするとランダム順に検索結果を表示します。
function My_order_search_result( $orderby ){ global $wpdb; if(!is_admin() && is_search()) { $orderby = "RAND()"; } return $orderby; } add_filter('posts_orderby','My_order_search_result');
4 更新日が新しい順に検索結果を表示
function My_order_search_result( $orderby ){ global $wpdb; if(!is_admin() && is_search()) { $orderby = "$wpdb->posts.post_modified DESC"; } return $orderby; } add_filter('posts_orderby','My_order_search_result');
5 コメント数が多い順に検索結果を表示
function My_order_search_result( $orderby ){ global $wpdb; if(!is_admin() && is_search()) { $orderby = "$wpdb->posts.comment_count DESC"; } return $orderby; } add_filter('posts_orderby','My_order_search_result');
6 スラッグ順に検索結果を表示
スラッグ(ページや投稿のURLの最後の部分)順に並び替えるには下記のようにします。ただ、日本語の場合はあいうえお順にはなりませんので、英語のスラッグでのみ意図した結果になります。
function My_order_search_result( $orderby ){ global $wpdb; if(!is_admin() && is_search()) { $orderby = "$wpdb->posts.post_name ASC"; } return $orderby; } add_filter('posts_orderby','My_order_search_result');
このほかにもメタバリュー(各投稿のカスタム値)で並び替え,カスタム投稿タイプのみ任意の方法で並び替え等も可能です。
この場合は、より複雑な検索クエリの置き換えや修正の処理が必要となってまいります。
WPドクターではワードプレスの検索結果の様々な加工のご依頼を承ります。お気軽にご依頼・ご相談お送りください。
WordPress ワードプレスサイトのカスタマイズ、PHPコーディングのご依頼・ご相談はWPドクターまでお気軽にお送りください