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; ?>