質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

2389閲覧

ワードプレスで絞込み検索をした後の検索結果ページでさらに人気順や新着順で並べ替えるのをしたい

artpenpom

総合スコア9

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/07/29 12:55

編集2018/07/29 12:58

前提・実現したいこと

ワードプレスで絞込み検索をした後の検索結果ページでさらに人気順や新着順で並べ替えるのをしたいんですが、並べ替えができません。WP-PostViewsを有効化してコードを貼り付けて見たのですがダメでした。phpはあまり得意でないので誰か教えてくれると助かります。
参考サイトは
https://ateitexe.com/wordpress-search-sort-popular/
http://kotori-blog.com/wordpress/refinement_search/

functions.php

php

1/* 絞込み検索 */ 2 3function custom_search($search, $wp_query ) { 4 //query['s']があったら検索ページ表示 5 if ( isset($wp_query->query['s']) ) $wp_query->is_search = true; 6 return $search; 7} 8add_filter('posts_search','custom_search', 10, 2); 9 10/* 並び替え */ 11function SortArchive( $query ) { 12 if ( is_admin() || ! $query->is_main_query() ) 13 return; 14 15 if ( $query->is_category() || $query->is_tag() || $query->is_search() ) { 16 $sortset = (string)filter_input(INPUT_GET, 'sort'); 17 if ( $sortset === 'older' ) { //古い 18 $query->set( 'orderby', 'date' ); 19 $query->set( 'order', 'ASC' ); 20 } elseif ( $sortset === 'popular' ) { //閲覧多 21 $query->set( 'meta_key', 'views' ); 22 $query->set( 'orderby', 'meta_value_num' ); 23 } elseif ( $sortset === 'unpopular' ) { //閲覧少 24 $query->set( 'meta_key', 'views' ); 25 $query->set( 'orderby', 'meta_value_num' ); 26 $query->set( 'order', 'ASC' ); 27 } else { //それ以外(新しい) 28 $query->set( 'orderby', 'date' ); 29 } 30 return; 31 } 32} 33add_action( 'pre_get_posts', 'SortArchive' );

search.php

php

1<section class="search item-area"> 2 3<h2>商品リスト</h2> 4(ここは全部表示) 5<?php 6$s = $_GET['s']; 7$catnum = $_GET['catnum']; 8$post_tag = $_GET['post_tag']; 9 10//tax_query用 11if($catnum){ 12 $taxquerysp[] = array( 13 'taxonomy'=>'category', 14 'terms'=> $catnum, 15 'include_children'=>false, 16 'field'=>'term_id', 17 'operator'=>'AND' 18 ); 19} 20 21//tax_query用 22if($post_tag){ 23 $taxquerysp[] = array( 24 'taxonomy'=>'post_tag', 25 'terms'=> $post_tag, 26 'include_children'=>false, 27 'field'=>'slug', 28 'operator'=>'AND' 29 ); 30} 31?> 32 33<div>検索条件</div> 34<?php if($s){ ?>検索キーワード:<?php echo $s; ?><br><?php } ?> 35<?php 36if (is_array($catnum)) { ?>カテゴリ:<?php 37foreach($catnum as $val){ 38if ($val === end($catnum)) { 39echo get_cat_name($val); 40 }else{ 41echo get_cat_name($val).", "; 42} 43} 44} 45 ?> 46<?php 47if (is_array($post_tag)) { ?>タグ(カスタムタクソノミー):<?php 48foreach($post_tag as $val){ 49if ($val === end($post_tag)) { 50echo get_term_by('slug',$val,"post_tag")->name; 51 }else{ 52echo get_term_by('slug',$val,"post_tag")->name.", "; 53} 54} 55} 56?> 57<div>検索結果</div> 58 59<?php 60if( is_search() ){ 61 $url_str = site_url('/'); 62 $srch = "\t" . '<input type="hidden" name="s" value="' . get_search_query() . '" />' . "\n"; 63} else { 64 $url_str = get_pagenum_link(1); 65} 66$sortset = (string)filter_input(INPUT_GET, 'sort'); 67$crt = ' class="sort_current"'; 68?> 69並び替え: 70<form method="get" action="<?php echo $url_str ?>"> 71<?php if( is_search() ){ echo $srch; } ?> 72 <input type="hidden" name="sort" value="newer" /> 73 <input type="submit"<?php if( $sortset !== 'older' && $sortset !== 'popular' && $sortset !== 'unpopular' ){ echo $crt; } ?> value="新しい" /> 74</form> 7576<form method="get" action="<?php echo $url_str ?>"> 77<?php if( is_search() ){ echo $srch; } ?> 78 <input type="hidden" name="sort" value="older" /> 79 <input type="submit"<?php if( $sortset === 'older' ){ echo $crt; } ?> value="古い" /> 80</form> 8182<form method="get" action="<?php echo $url_str ?>"> 83<?php if( is_search() ){ echo $srch; } ?> 84 <input type="hidden" name="sort" value="popular" /> 85 <input type="submit"<?php if( $sortset === 'popular' ){ echo $crt; } ?> value="閲覧多" /> 86</form> 8788<form method="get" action="<?php echo $url_str ?>"> 89<?php if( is_search() ){ echo $srch; } ?> 90 <input type="hidden" name="sort" value="unpopular" /> 91 <input type="submit"<?php if( $sortset === 'unpopular' ){ echo $crt; } ?> value="閲覧少" /> 92</form> 93 94<div class="new_box"> 95<ul class="clearfix width100"> 96 97<?php 98query_posts( array( 99 'tax_query' => $taxquerysp, 100 's' => $s, 101 'paged' => $paged, 102 'posts_per_page' => 20, // 表示件数 103 ) 104); 105?> 106<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 107 108 109 <li> 110<a class="next" href="<?php echo get_permalink(); ?>"> 111<?php 112// アイキャッチ画像のIDを取得 113$thumbnail_id = get_post_thumbnail_id(); 114 115// mediumサイズの画像内容を取得(引数にmediumをセット) 116$eye_img = wp_get_attachment_image_src( $thumbnail_id , 'middle' ); 117 118// 取得した画像URLにてイメージタグを出力 119// 更にdata-aliasというHTML5のカスタムデータ属性を追加 120echo '<div class="thumbnail" style="background-image:url('.$eye_img[0].')"></div>'; 121?> 122 <div class="item-textarea"> 123<h3><?php the_title(); ?></h3> 124 <div class="normal-company"><?php echo post_custom('制作会社'); ?></div> 125 </div> 126</a> 127</li> 128 129<?php endwhile; else : ?> 130 131<div>該当なし</div> 132 133<?php endif; 134wp_reset_query(); ?> 135 136</ul> 137<?php 138// ページングを表示 139if (function_exists('wp_pagenavi')) { wp_pagenavi(); } 140// ループ処理のデータをリセット 141wp_reset_query(); 142?> 143 144</div> 145</section>

試したこと

並べ替えのコードはよくわからないまま検索結果のところに突っ込んでしまいました。
どこに入れても並べ替えができません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問