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

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

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

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

PHP

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

Q&A

1回答

627閲覧

絞り込み検索した一覧ページでソートを実行すると、絞り込んだもの以外のカテゴリが混ざってしまう

mamamamamama

総合スコア25

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/03/15 04:29

編集2019/03/15 05:06

エリアとカテゴリーで絞り込み検索した一覧ページで、ソートを実行すると絞り込んだもの以外のカテゴリが混じってしまいます。

page-sample.php(固定ページ)に絞り込み検索を実装しました。
そこでエリアとカテゴリーをそれぞれ選択すると問題なく該当する記事一覧が表示されます。
ですが、その記事一覧にソートをかけると選択していないカテゴリーが混ざって表示されてしまいます。
なぜなのでしょうか。調べても何の手掛かりもつかめず質問させていただきました。
よろしくお願いします!

■page-sample.php

<!-- 絞り込み検索部分--> <form action="<?php echo get_post_type_archive_link('カスタム投稿名'); ?>" method="get"> <dl> <dt><i class="fas fa-map-marker-alt"></i>エリア</dt> <dd><?php $arg = array( 'hide_empty'=>true, 'parent' => 0, 'orderby' =>'ID' ); echo my_tax_checkbox('area',$arg); ?> </dd> </dl> <dl> <dt><i class="fas fa-folder-open"></i>カテゴリー</dt> <dd> <?php $arg = array( 'hide_empty'=>true, 'parent' => 0, 'orderby' =>'ID' ); echo my_tax_checkbox('cate',$arg); ?> </dd> </dl> <p class="button"><button type="submit"><i class="fas fa-search"></i>検索</button></p> </form>

■archive.php

<!-- ソート部分 --> <h3>並び替え:</h3> <ul> <li><a href="<?php echo add_query_arg( array('orderby' => 'date', 'order' => 'DESC'), get_pagenum_link(1) ); ?>">新着順</a></li> <li><a href="<?php echo add_query_arg( array('meta_key' => 'views', 'orderby' => 'meta_value_num', 'order' => 'DESC'), get_pagenum_link(1) ); ?>">閲覧数の多い順</a></li> <li><a href="<?php echo add_query_arg( array('meta_key' => 'phonetic', 'orderby' => 'meta_value', 'order' => 'ASC'), get_pagenum_link(1) ); ?>">50音順</a></li> </ul>

■functions.php

//絞り込み検索 function my_tax_selectbox($tax,$arg,$default=null) { $qv = get_query_var($tax); $terms = get_terms($tax,$arg); $output = ''; $output .= '<select name="'.$tax.'">'."\n"; if($default) { $output .= '<option value="">'.$default.'</option>'."\n"; } foreach($terms as $t) { $selected = ''; if(is_array($qv)) { if(in_array($t->slug,$qv)) $selected = ' selected'; } else { if($t->slug==$qv) $selected = ' selected'; } $output .= '<option value="'.$t->slug.'"'.$selected.'>'.$t->name.'</option>'."\n"; } $output .= '</select>'; echo $output; } function my_tax_checkbox($tax,$arg) { $qv = get_query_var($tax); $terms = get_terms($tax,$arg); $output = ''; foreach($terms as $t) { $checked = ''; if(is_array($qv)) { if(in_array($t->slug,$qv)) $checked = ' checked'; } else { if($t==$qv) $checked = ' checked'; } $output .= '<label class="c-checkbox"><input type="checkbox" name="'.$tax.'[]" value="'.$t->slug.'"'.$checked.'><span class="c-checkbox__input"></span>'.$t->name.'</label>'."\n"; } echo $output; } //記事一覧のソート function add_meta_query_vars( $public_query_vars ) { $public_query_vars[] = 'meta_key'; $public_query_vars[] = 'meta_value_num'; return $public_query_vars; } add_filter( 'query_vars', 'add_meta_query_vars' );

◆エリアとカテゴリーで絞り込み検索した一覧ページで、ソートを実行すると絞り込んだもの以外のカテゴリが混じってしまった際のパーマリンク
https://sample.jp/カスタム投稿名/?area[0]=area1&orderby=date&order=DESC#038;cate[0]=cate1
⇑「&」が「#038;」に文字化けしている??→URL入力欄で直接「#038;」を「&」に書き換えると、一覧が正常に表示されました。。

--追記--
以下のコードを試してみましたが結果は変わらずでした。
■functions.php

function my_replace_amp($content) { return str_replace('&#038;', '&', $content); } add_filter('the_content', 'my_replace_amp');

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

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

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

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

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

guest

回答1

0

functions.phpに以下を追記したらどうでしょうか?
【WordPress】特殊文字が自動変換されるのを回避する方法。

PHP

1add_filter( 'run_wptexturize', '__return_false' );

投稿2019/03/15 05:09

mayoi_maimai

総合スコア1583

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

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

mamamamamama

2019/03/18 01:04

回答ありがとうございます。 お教えいただいたコードを試してみましたが、#038;のままで、ソート結果にも変化はありませんでした。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問