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

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

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

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

PHP

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

Q&A

解決済

1回答

9070閲覧

【WordPress】絞り込み検索後、カスタムフィールドの値で記事を並び替えたい

Fozmy

総合スコア12

WordPress

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

PHP

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

0グッド

2クリップ

投稿2016/08/02 14:02

編集2016/08/02 14:04

###前提・実現したいこと

WordPressにて、ソートの可能な商品検索機能の実装を目指しています。
商品はカスタム投稿で記事として登録し、商品の情報はカスタムフィールドを使用して登録しています。

絞り込み検索をプラグインを使わずに実装[WordPress]

上の記事を参考に、絞り込み検索を実装するところまでは達成できました。
その検索結果の商品一覧を、カスタムフィールドの値をもとに「価格の安い順」などの条件で並び替える機能を実装したいのですが、その方法がわからない状況です。

WordPressの検索ページを人気順などで並び替えるボタンをつける

こちらの記事を参考に、pre_get_postsフックで記事をソートする方向で進めています。
検索結果はpre_get_postsで制御するように置き換えたので、
あとは絞り込み検索のクエリストリングを維持しつつ$sortsetに値を引き渡すことができれば、
記事の並び替えを実現できるのではないかと考えています。

search.php

<?php if( is_search() ){ $url_str = site_url('/'); $srch = "\t" . '<input type="hidden" name="s" value="' . get_search_query() . '" />' . "\n"; } $sortset = (string)filter_input(INPUT_GET, 'sort'); $crt = ' class="sort_current"'; ?> <form method="get" action="<?php echo $url_str ?>"> <?php if( is_search() ){ echo $srch; } ?> <input type="hidden" name="sort" value="newer" /> <input type="submit"<?php if( $sortset === 'newer' ){ echo $crt; } ?> value="新しい順" /> </form> ```[参考サイト](http://ateitexe.com/wordpress-search-sort-popular/)では、上記の記述で検索クエリを継承しつつ、```$sortset === 'newer'```を受け渡していますが、今回はカスタムフィールド等を用いた複数条件による検索なので、複数のクエリをどのように受け渡せばよいのか悩んでいます。 なお、**searchform.php**の記述は次のようになっています。
<form method="get" action="<?php echo home_url(); ?>"> <input name="s" id="s" type="hidden"> <div> <p>商品ブランド</p> <select name="item_brand"> <option value="">選択してください</option> <?php $set_cats = array ( 'orderby' => 'count', 'order' => 'DESC', 'taxonomy' => 'brand', ); $cats = get_categories($set_cats); foreach($cats as $cat) : echo '<label>' . '<option value="' . $cat->term_id . '">' . esc_html($cat->cat_name) . '</option>'; endforeach; ?> </select> </div> <div> <p>商品のタイプ</p> <label><input type="radio" name="item_type" value="タイプ1" />タイプ1</label> <label><input type="radio" name="item_type" value="タイプ2" />タイプ2</label> <label><input type="radio" name="item_type" value="タイプ3" />タイプ3</label> </div> <div> <p>価格帯</p> <select name="price_low"> <option value="0" selected>下限なし</option> <option value="10000">10,000円</option> <option value="20000">20,000円</option> <option value="20000">30,000円</option> </select>~ <select name="price_high"> <option value="10000">10,000円</option> <option value="20000">20,000円</option> <option value="20000">30,000円</option> <option value="99999" selected>上限なし</option> </select> </div> <div> <label><input type="checkbox" name="condition_a[]" value="1">条件A</label> </div> <div> <label><input type="checkbox" name="condition_b[]" value="1">条件B</label> </div> <div> <label><input type="checkbox" name="condition_c[]" value="1">条件C</label> </div> <div> <input id="submit" type="submit" value="商品検索" /> </div> </form> ```

######バージョン・補足
・PHP : 5.4.45
・WordPress : 4.5.3
・カスタムフィールドの値は、Advanced Custom Fieldsを使用して登録しています。
その他、情報の不足等があればご指摘下さい。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

checkboxname を同名にして、pre_get_posts で配列として受け取ってそれを処理すればよいのでは?というか書かれている参考URLに書いてありますね。

【複数選択可能なフォーム部品から送られたデータを、PHPで取得 - PHP 逆引きリファレンス】
http://alphasis.info/2012/11/php-gyakubiki-form-post-multiple/

【絞り込み検索をプラグインを使わずに実装[WordPress]】
http://kotori-blog.com/wordpress/refinement_search/#refinement8

「ソート」部分がわからなければこのあたりでしょうか。

【ヾ(o゚ω゚o)ノ゙複数のカスタムフィールドで記事を並び替える - Qiita】
http://qiita.com/harapeko_wktk/items/4fe7d39ad22d3951e5cc

投稿2016/08/04 07:18

kei344

総合スコア69400

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問