サポート » 使い方全般 » 複数の値のセレクトボックス検索について

  • 解決済 sana0211

    (@sana0211)


    いつもお世話になっておりますセレクトボックス検索をつかって、サブループでスケジュールの切替表示をつくっています。
    検索結果そのものは希望通りに得られたのですが、表示期間設定をカスタムフィールドの値で取得する際の初期設定ができないのと、’kikan’の選択後も表示が全てkikan1にもどってしまいます。

    教えていただきたいのは、
    ・初期(未選択時)のページをkikan1の検索結果で表示したい。
    ・kikan2,kikan3の選択後もセレクトボックスにはkikan1が表示されてしまう原因
    についてです。

    たぶん初歩的なことだと思い質問するのが恥ずかしいのですが、どうしても自力で答えに辿りつけませんでした。

    <form name=”loops” method=”get” >

    <select name=’loop’ >
    <option value=”sort1″<?php if(isset($_REQUEST[‘loop’]) && $_REQUEST[‘loop’] == ‘sort1’) echo ‘ selected=”selected”‘;?>>a</option>
    <option value=”sort2″<?php if(isset($_REQUEST[‘loop’]) && $_REQUEST[‘loop’] == ‘sort2’) echo ‘ selected=”selected”‘;?>>b</option>
    <option value=”sort3″<?php if(isset($_REQUEST[‘loop’]) && $_REQUEST[‘loop’] == ‘sort3’) echo ‘ selected=”selected”‘;?>>c</option>
    </select>

    <select name=’kikan’ >
    <option value=”<?php echo date(“Y/m/d”,strtotime(“+7 day”)) ;?>” ;?>kikan1</option>
    <option value=”<?php echo date(“Y/m/d”,strtotime(“+1 month”)) ;?>” ;?>kikan2</option>
    <option value=”<?php echo date(“Y/m/d”,strtotime(“+3 month”)) ;?>” ;?>kikan3</option>
    </select>

    <input type=”submit” value=”change” />

    </form>

    <?php $sortset = $_GET[‘loop’]; ?>
    <?php $kikan = $_GET[‘kikan’]; ?>

    <?php
    $current_date = date( ‘y/m/d’ );
    $i=0;
    $sortall = array(
    “sort1” => array(
    ‘post_type’ => array(‘livesch_one’,’livesch_many’),
    ‘meta_key’ => ‘count’,
    ‘order’ => ‘DESC’,
    ‘orderby’ => meta_value_num,
    ‘posts_per_page’ => 20,
    ‘meta_query’ => array(
    ‘relation’ => ‘AND’,
    array(
    ‘key’ => ‘エリア’,
    ‘value’ => ‘東京’
    ),
    array(
    ‘value’ => date(“Y/m/d”,strtotime(“now”)),
    ‘key’ => ‘開催日’,
    ‘compare’ => ‘>=’,
    ‘type’ => ‘DATE’,
    ),
    array(
    ‘key’ => ‘開催日’,
    ‘value’ => $kikan,
    ‘compare’ => ‘<=’,
    ‘type’ => ‘DATE’
    ),
    ),
    ),
    “sort2” => array(
    ‘post_type’ => ‘livesch_one’,
    ‘meta_key’ => ‘count’,
    ‘order’ => ‘DESC’,
    ‘orderby’ => meta_value_num,
    ‘posts_per_page’ => 20,
    ‘meta_query’ => array(
    ‘relation’ => ‘AND’,
    array(
    ‘key’ => ‘エリア’,
    ‘value’ => ‘東京’
    ),
    array(
    ‘value’ => date(“Y/m/d”,strtotime(“now”)),
    ‘key’ => ‘開催日’,
    ‘compare’ => ‘>=’,
    ‘type’ => ‘DATE’,
    ),
    array(
    ‘key’ => ‘開催日’,
    ‘value’ => $kikan,
    ‘compare’ => ‘<=’,
    ‘type’ => ‘DATE’
    ),
    ),
    ),
    “sort3” =>array(
    ‘post_type’ => ‘livesch_many’,
    ‘meta_key’ => ‘count’,
    ‘order’ => ‘DESC’,
    ‘orderby’ => meta_value_num,
    ‘posts_per_page’ => 10,
    ‘meta_query’ => array(
    ‘relation’ => ‘AND’,
    array(
    ‘key’ => ‘エリア’,
    ‘value’ => ‘東京’
    ),
    array(
    ‘value’ => date(“Y/m/d”,strtotime(“now”)),
    ‘key’ => ‘開催日’,
    ‘compare’ => ‘>=’,
    ‘type’ => ‘DATE’,
    ),
    array(
    ‘key’ => ‘開催日’,
    ‘value’ => $kikan,
    ‘compare’ => ‘<=’,
    ‘type’ => ‘DATE’
    ),
    ),
    ),
    );?>

    <?php if($sortset != ”) {
    $sort = $sortall[$sortset];
    } else {
    $sort = $sortall[“sort1”];} ?>

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • ちょっと眺めてみたんですが、理想の実装が理解できていないかもしれません。
    的外れだったらごめんなさい。

    ・初期(未選択時)のページをkikan1の検索結果で表示したい。

    <?php if( empty($_GET['loop']) ) {
    $sort = $sortall[$sortset];
    } else {
    $sort = $sortall["sort1"];} ?>

    たぶんここからget_posts等々されるんだと思いますが、ちょっと理解できてません。ごめんなさい。

    ・kikan2,kikan3の選択後もセレクトボックスにはkikan1が表示されてしまう原因についてです。

    一応WordPressにはchecked関数というものがあります。
    <?php !empty($_GET["loop"]) ? checked('sort1', true, true) : ''; ?>
    でいかがでしょうか。

    トピック投稿者 sana0211

    (@sana0211)

    返信遅れてしまってすいません。checked関数は、はじめて知りました。やはりもっと勉強しないとダメですね。投稿時に作っていたフォームはoptionを増やす事で、不格好ながらなんとかなりそうなんですが、この後、search.phpを作りたいのでAkimotoさんのコードを参考に挑戦してみます。ありがとうございます!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「複数の値のセレクトボックス検索について」には新たに返信することはできません。