index.php や カテゴリーアーカイブなどでリスト表示される投稿の、並び替えの試み
http://ja.forums.wordpress.org/topic/7943?replies=6(@souce)の質問にあったものですが、カテゴリアーカイブなどを表示した場合には、クエリがリセットされてしまうため、既存のクエリがリセットされない方法を試してみました。
パーマリンクの設定:default
テンプレートに、
<ul> < ?php my_query_str('コメントの多い順','orderby=comment_count&order=DESC'); my_query_str('コメントの少ない順','orderby=comment_count&order=ASC'); my_query_str('更新新しい順','orderby=modified&order=DESC'); my_query_str('日付の古い順','order=ASC'); my_query_str('日付の新しい順','order=DESC'); my_query_str('タイトル昇順','orderby=title&order=ASC'); my_query_str('タイトル降順','orderby=title&order=DESC'); my_query_str('','orderby=title&order=DESC'); ?> </ul>
functions.phpに
<?php function my_query_str($title="", $add_query= array(),$before= '<li>', $after='' ){ //$url= sprintf( 'http://%1$s%2$s', $_SERVER["HTTP_HOST"], $_SERVER["REDIRECT_URL"].'?' ); $host = $_SERVER['HTTP_HOST']; $dirname = dirname($_SERVER['PHP_SELF']); $filename = basename($_SERVER['SCRIPT_FILENAME']); $url = "http://{$host}{$dirname}/{$filename}".'?'; $amp = '&'; $query = $_SERVER['QUERY_STRING']; $result = ''; parse_str($query, $output); parse_str($add_query, $add_query ); $output= array_merge( $output, $add_query ); foreach($output as $k=>$v){ $result .= $amp. $k. '='. $v; } if( empty( $title ) ){ $title= str_replace(array('?','&'),array('', ' , '),$result); } printf('%1$s<a href="%2$s%3$s">%4$s</a>%5$s', $before, //ラップする要素 $url, //URL $result, //クエリ $title, //タイトル $after //ラップする要素 ); } ?>
http://ja.forums.wordpress.org/topic/7943?replies=6(@souce)