WordPress Snippet

ワードプレスをカスタマイズしよう

リスト表示の投稿をソートする

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)

[emulsion_relate_posts]