ソート順を維持したままページ送りを実装したい
-
こんにちは。
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;?>`お手数ではございますが、ご教授いただければ幸いです。
- トピック「ソート順を維持したままページ送りを実装したい」には新たに返信することはできません。