web-dev-qa-db-ja.com

フィルタ選択に基づいて結果を選択する

ユーザーが自分のフォームの選択項目を変更するたびに、どの求人結果がページに表示されるかをフィルター処理しようとしています。選択項目には、以下のコードが動的に取り込まれ、スラッグとラベルの値が割り当てられます。

        <div style="background: url('<?php bloginfo( 'template_directory'); ?>/images/drop-arrow2.png') no-repeat;" id="cat-select">
            <form name="job_select" action="<?php bloginfo('url'); ?>/jobs.php" method="get">
                <select class="job_cats" name="position_name" onchange='<?php echo ".$category->category_nicename."; ?>'>
                         <?php 
                              // For every child of blog
                              $post_count = 1;
                              $categories =  get_categories('child_of=16'); 
                              foreach ($categories as $category) {
                                $option = '<option value="'.$category->category_nicename.'">';
                                $option .= $category->cat_name;
                                $option .= '</option>';
                                echo $option;
                                $post_count++;
                              }
                         ?> 
                </select>
            </form>
    </div>

それからコードは私のメインWPループに移動します。ここで私のすべての投稿はこのクエリを使ってページにレンダリングされます -

    <?php 
    $node_id = 0;
    $args = array(
        'post_type' => 'jobs',
        'category_name' => $_GET['position_name']
    );

    $the_query = new WP_Query( $args );


?>

結果をフィルタリングするために$category->cat_name(スラッグ)を 'category_name'引数に入れたいのですが、どうすればよいのかわかりませんa)これらの新しいフィルタリングされた結果を表示するためにページを更新する(AJAXが必要ですか?)これを行うには?)およびb)選択ボックスの現在選択されているインデックスをパラメーターとして 'category_name'に渡す方法はありますが、$_GET['position_name']を使用してみましたが、結果が得られませんでした。

私のページがどのように見えるかを視覚的に示すために、スクリーンショットをここに見ることができます Form Screengrab どんな提案でも大いに評価されるでしょう。

1
Alex Sims

私のコメントが質問に答えるように見えた:

URLパラメータにアクセスするには$wp_query->query_vars['myvar']が必要です。 http://wordpress.org/support/topic/how-to-pass-value-in-wordpress-url 、例えば:

<?php
global $wp_query; 
$node_id = 0;
$args = array(
    'post_type' => 'jobs',
    'category_name' => $wp_query->query_vars['position_name']
);

$the_query = new WP_Query( $args );

質問の他の部分は実際にはWordPressの問題ではないので、Stack Overflowがそれらを尋ねるのに最も良い場所です。ページを更新するには、onchangeイベントのための JavaScriptリダイレクトを使用してページを自分自身にリダイレクトするか 、または AJAXを使用してコンテンツを更新します。ページが更新されないonchangeイベント .

1
icc97