• 解決済 PressKKK

    (@presskkk)


    こんにちは。

    SELECTフォームを利用して任意のソート順に記事一覧を出力しているのですが、
    これにページナビゲーションを追加したいです。

    ソート、ページナビゲーション共に単体ではうまく動作しているのですが
    組み合わせるとうまくいきません。

    つまりソートした並び順で次のページにいくとソート順が初期化されてしまうのです。

    ページナビゲーションで任意のページに移動する際にソート条件を引き継げていないのが問題なのはわかっているのですが、どうやってソート順の値をページ送りの際に引き渡すのかがわかりません。

    ページナビゲーションにはPrime Strategy Page Naviというプラグインを利用しています。

    現在のコードはこれです。

    `<form name=”sort_data” method=”post” id=”sort_data” class=”sort_form”>
    <select name=’sort’ onChange=”document.forms[‘sort_data’].submit()” >
    <option value=”sort1″<?php if(!isset($_REQUEST[‘sort’]) || $_REQUEST[‘sort’] == ‘sort1’) echo ‘ selected=”selected”‘;?>>投稿日時が新しい順</option>
    <option value=”sort2″<?php if(isset($_REQUEST[‘sort’]) && $_REQUEST[‘sort’] == ‘sort2’) echo ‘ selected=”selected”‘;?>>投稿日時が古い順</option>
    <option value=”sort3″<?php if(isset($_REQUEST[‘sort’]) && $_REQUEST[‘sort’] == ‘sort3’) echo ‘ selected=”selected”‘;?>>五十音順(あ~わ)</option>
    <option value=”sort4″<?php if(isset($_REQUEST[‘sort’]) && $_REQUEST[‘sort’] == ‘sort4’) echo ‘ selected=”selected”‘;?>>五十音順(わ~あ)</option>
    <option value=”sort5″<?php if(isset($_REQUEST[‘sort’]) && $_REQUEST[‘sort’] == ‘sort5’) echo ‘ selected=”selected”‘;?>>五十音順(A~Z)</option>
    <option value=”sort6″<?php if(isset($_REQUEST[‘sort’]) && $_REQUEST[‘sort’] == ‘sort6’) echo ‘ selected=”selected”‘;?>>五十音順(Z~A)</option>
    <option value=”sort7″<?php if(isset($_REQUEST[‘sort’]) && $_REQUEST[‘sort’] == ‘sort7’) echo ‘ selected=”selected”‘;?>>年代が新しい順</option>
    <option value=”sort8″<?php if(isset($_REQUEST[‘sort’]) && $_REQUEST[‘sort’] == ‘sort8’) echo ‘ selected=”selected”‘;?>>年代が古い順</option>
    </select>
    </form>
    <?php
    if(isset($_POST[“sort”])) {
    $sortset = $_POST[‘sort’];
    switch ($sortset) {
    case ‘sort1’:
    $st1 = ‘DESC’;
    $st2 = null;
    $st3 = null;
    break;
    case ‘sort2’:
    $st1 = ‘ASC’;
    $st2 = null;
    $st3 = null;
    break;
    case ‘sort3’:
    $st1 = ‘ASC’;
    $st2 = ‘meta_value’;
    $st3 = ‘article_aiueo’;
    break;
    case ‘sort4’:
    $st1 = ‘DESC’;
    $st2 = ‘meta_value’;
    $st3 = ‘article_aiueo’;
    break;
    case ‘sort5’:
    $st1 = ‘ASC’;
    $st2 = ‘meta_value’;
    $st3 = ‘article_abc’;
    break;
    case ‘sort6’:
    $st1 = ‘DESC’;
    $st2 = ‘meta_value’;
    $st3 = ‘article_abc’;
    break;
    case ‘sort7’:
    $st1 = ‘DESC’;
    $st2 = ‘meta_value_num’;
    $st3 = ‘article_year’;
    break;
    case ‘sort8’:
    $st1 = ‘ASC’;
    $st2 = ‘meta_value_num’;
    $st3 = ‘article_year’;
    break;
    default:
    }
    }
    else
    {
    if($sortset == null) {
    //$sortset = “sort1”;
    $st1 = ‘DESC’;
    $st2 = null;
    $st3 = null;
    }
    }
    ?>
    <?php

    ?>

    <?php
    $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
    /* 配列条件式 */
    $array_article = array(
    ‘category_name’ => $slg->slug,
    ‘order’ => $st1,
    ‘orderby’ => $st2,
    ‘meta_key’ => $st3,
    ‘posts_per_page’ => 20,
    ‘posts_per_archive_page’ => 10,
    ‘nopaging’ => false,
    ‘paged’ => $paged
    );
    ?>

    <?php
    /* 記事の呼び出し */
    $my_query =& new WP_Query($array_article);
    if( $my_query->have_posts() ) : ?>

    <ul class=”thumbnails”>
    <?php while( $my_query->have_posts() ) : $my_query->the_post(); ?>
    <li class=”item”>
    <ul class=”thumbnail”>
    <li class=”thumbimage”><a href=”<?php the_permalink(); ?>”><?php the_post_thumbnail(array(170,136), array(‘class’ => ‘left’)); ?></a></li>
    <li class=”thumbtitle”><a href=”<?php the_permalink(); ?>”><?php the_title(); ?></a></li>
    <li class=”thumbdescription”><?php echo get_post_meta($post->ID,’introduction’,$single=true); ?></li>
    </ul>
    </li>
    <?php endwhile;?>
    </ul>

    <?php if ($my_query->max_num_pages > 1): ?>
    <?php if (function_exists(‘page_navi’)) :
    page_navi( ‘items=20&show_num=1&num_position=after’ );
    endif; ?>
    <?php endif;?>`

    お手数ではございますが、ご教授いただければ幸いです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    GETにするか、POSTのままにしたいならCOOKIEに保存して、それを利用するようにします。
    ただし、COOKIEの保存は表示が始まってしまうと出来ません。テンプレートファイルに記述するのであれば、get_headerよりも先に処理を行う必要があります。

    トピック投稿者 PressKKK

    (@presskkk)

    jim912さん

    返答が遅くなってしまい申し訳ありません。
    無事GETにすることで希望の動作を実現することが出来ました。

    素早い回答ありがとうございます。

    POSTの場合の処理も折を見て挑戦してみたいと思います。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「ソート順を維持したままページ送りを実装したい」には新たに返信することはできません。