概要
WordPressの記事一覧にて、
記事の並びを降順、昇順に切り替えられるセレクトボックスを追加するモジュールです。
※URL構造をカスタマイズしている場合使えないので注意してください
ファイルダウンロード
設置例

ダウンロードしたwp_sort_form.phpを使用しているテーマフォルダ内に設置してください。

・WordPress構造例

  • wordpress
    • wp-admin
    • wp-content
      • languages
      • plugins
      • themes
        • 使用しているテーマフォルダ
          • archive.php
          • category.php
          • index.php
          • search.php
          • etc...
      • upgrade
      • uploads
    • wp-includes


パーマリンクの設定変更
WordPressの管理画面からパーマリンク設定
カスタマイズで以下の画像のように「/%post_id%/」というパラメータを追加する形に変更してください。



設置方法
設置したい一覧画面の「have_posts()」という関数が 記述されている行よりに以下の記述を追加します。
デフォルトだと、一覧ページのファイルは恐らく
archive.php、category.php、index.php、archive.php」の4つぐらいだと思います。
			 
			<?php include(get_theme_root() . '/' . get_template() . "/wp_sort_form.php"); ?>
			 
			
ソース詳細

〇サンプル

デモは、私のブログの方に設置してありますのでそちらでご覧下さい。
作者の戯言

sort.php
やっていることは単純で、セレクトボックスのフォームでGETパラメータを送り、
そのパラメータを取得して、各記事のパラメータと合わせて、一覧の記事を再取得してるだけです。
少しPHPが分かる人でしたらカスタマイズで好きなパラメータを追加するのも可能だと思います。
				<?php 
					// GETパラメータからソート指定を取得
					$order = $_GET['order'];
				?>
	
				<form name="sort_select" method="get" id="sort_select" class="sort_select">
					記事の並び替え:<select name='order' onChange="document.forms['sort_select'].submit()" >
						<option value="">----</option>
						<option value="DESC" <?php if($order == 'DESC') echo 'selected="selected"';?>>投稿日時が新しい順</option>
						<option value="ASC" <?php if($order == 'ASC') echo 'selected="selected"';?>>投稿日時が古い順</option>
					</select>
				</form>
	
				<?php
					// ソート指定と一覧に該当するパラメータをリストにまとめる
					$sort_params =array(
						"order" =>$order,
						"paged" =>$paged,
						"cat" =>$cat,
						"year" =>$year,
						"monthnum" =>$monthnum,
					);
		
					// 各パラメータをquery_postsの条件指定文字列に変換
					$c =null;
					foreach ($sort_params as $k => $v) {
			
						if ($v && !$c) {
							$c .=$k . "=" .$v;
						} else if ($v) {
							$c .="&" . $k . "=" .$v;
						}
			
					}
		
					// 指定した条件で記事を取得
					query_posts($c);
				?>
			


参考
例えば、よくデフォルトテンプレートで使われているtwentyfourteenindex.phpだったら
			 
			......
			 
			<?php
				if ( is_front_page() && twentyfourteen_has_featured_posts() ) {
					// Include the featured content template.
					get_template_part( 'featured-content' );
				}
			?>

				<div id="primary" class="content-area">
					<div id="content" class="site-content" role="main">
						
						// ここにソートの呼び出しコードを追加
						<?php include(get_theme_root() . '/' . get_template() . "/wp_sort_form.php"); ?>

					<?php
						if ( have_posts() ) :
							// Start the Loop.
							while ( have_posts() ) : the_post();
			 
			......