WordPressで検索結果でパラメーターの値を保持させる方法

August 09, 2018 Aug 10, 2018

WordPressの検索フォームをカスタマイズし、検索結果のページにもフォームを表示させている場合。

検索クエリや絞り込み条件を保持させるておくと親切だ。

 

検索結果でフォームの検索クエリを保持する方法

inputに以下を追加

value="<?php if(get_search_query()) echo get_search_query() ?>"

検索結果でパラメータから値を取りだし保持する方法

<?php function getParamVal($param) {
$val
= (isset($_GET[$param]) && $_GET[$param] != '') ? $_GET[$param] : '';
$val
= htmlspecialchars($val, ENT_QUOTES);

return $val;
} ?>

inputに以下を追加

value="<?php echo getParamVal('取得したいパラメータの値'); ?>"

wp_dropdown_categoriesを使用し、パラメーターの値からカテゴリを保持

<?php
$selected_id = getParamVal('cat');
$args = array(
'show_option_all' => 'カテゴリー選択',
'selected' => $selected_id,
); ?>
<?php wp_dropdown_categories( $args ); ?> 

 

タームの絞り込みでチェックボックスのcheckedの値を保持

これが曲者だが、一つの方法はurlのパラメータで条件分岐する方法。

urlにタームスラッグが含まれていれば、checkedでラベルを出力する。タームの種類が限られているならばこれで解決。

<?php
$url = $_SERVER['REQUEST_URI'];
if(strstr($url,'タームスラッグ')==true):
?>
<label><input type="checkbox" name="タクソノミー名[]" checked="checked" value="タームスラッグ">ターム名</label>
<?php else: ?>
<label><input type="checkbox" name="タクソノミー名[]" value="タームスラッグ">ターム名</label>
<?php endif; ?>

RELATED POSTS