前提・実現したいこと
wordpressで検索サイトを制作しています。
固定ページにフリーワード検索を設置しています。検索結果はsearch.phpに表示させています。
この検索結果の初期表示を50音順(あ行から)にしたいのですが、並び順が逆(ワ行から)になってしまいます。
カスタムフィールドで店舗名をフリガナで登録しています。
このデータを元に50音順表示を設定しています。
検索結果とは別に、taxonomy-term.phpで店舗一覧を表示しているページもあるのですが、こちらだと正常に50音順表示されています。
PHPに関しては初心者です。
考えられる原因はありますか?
皆様の知恵をお貸しください。
よろしくお願いいたします。
該当のソースコード
page.php 検索ボックス
<h3><i class="fas fa-font"></i>フリーワード検索</h3> <form method="get" id="Search" action="<?php echo home_url('/'); ?>"> <input type="text" name="s" id="SearchInput" class="word-box" value="<?php the_search_query(); ?>" placeholder="キーワードを入力してください" /> <input type="hidden" name="post_type" value="school"> <input class="search_btn fas" type="submit" value="検索" accesskey="f" /> </form>
functions.php
//店舗一覧ページ初期表示を50音順にする function change_posts_per_page($query) { if ( is_admin() || ! $query->is_main_query() ){ return; } if ( $query->is_tax()) { if(!isset($query->query['orderby'])){ $query->set( 'meta_key', 'phonetic' ); $query->set( 'orderby', 'meta_value' ); $query->set( 'order', 'ASC' ); }else{} return; } if ( $query->is_search()) { if(!isset($query->query['orderby'])){ $query->set( 'meta_key', 'phonetic' ); $query->set( 'orderby', 'meta_value' ); $query->set( 'order', 'DESC' ); }else{} return; } } add_action( 'pre_get_posts', 'change_posts_per_page' );
search.php
<?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> <article> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </article> <?php endwhile; else: ?> <p><?php echo "お探しのページは見つかりませんでした。条件やキーワードを変えて再度検索してみてください。"; ?></p> <?php endif; ?>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/07 02:55