使用しているテーマによっては例外もありますが、WordPressでは基本的に記事を作成(公開)した日を基準に記事の並び順が決まります。
トップページや記事一覧ページには新しい記事ほど上に表示されており、古い記事を上にもっていこうとすると記事の投稿日時を変更する必要があります。
これを、すでにある記事を更新順に並べ替えて上に表示してくれる方法をご紹介します。
記事の日付も変更する事なく自動でソートしてくれます。
- 利用するコード
-
プラグインは不要で、ワードプレスのquery_postsを使います。
テーマ編集で以下のコードを記事ループ部分の前後に挿入します。<?php query_posts($query_string .'&orderby=modified'); ?> ★記事ループ部分 <?php wp_reset_query(); ?>
使っているテーマによって挿入する場所が違ってきますが、だいたいこの順番になるかと思います。
- <?php query_posts($query_string .’&orderby=modified’); ?>
- <?php while ( have_posts() ) : the_post(); ?>
- <?php the_title(); ?>
- <?php the_content(); ?>
- <?php endwhile;endif; ?>
- <?php wp_reset_query(); ?>
挿入位置を間違えると、一見成功しているように見えますが、2ページ目3ページ目に進んでみるとおかしな表示になっていたりするので、その場合は挿入位置を変更しながら調整してみてください。
- 実例
- ariというテーマ(作成中)で実際に導入してみました。
このテーマの場合は、記事ループはindex.phpに直接記述されてはおらずloop.phpという別ファイルにしていましたので、index.phpをこのようにしました。これが変更前。
<div id="content"> <?php get_template_part( 'loop', 'index' ); ?> </div>
記事ループは「<?php get_template_part( ‘loop’, ‘index’ ); ?>」で呼び出しているので、下記のように変更しました。
<div id="content"> <?php query_posts($query_string .'&orderby=modified'); ?> <?php get_template_part( 'loop', 'index' ); ?> <?php wp_reset_query(); ?> </div>
- こんなとき便利
- この機能は既存の記事に追記しながら運営するブログに最適です。
例えばこのサイト「福井ラーメンレポート」(※現在は別の形式にしました)のように、すでにある記事中を追記する形式で更新しています。
こうする事で新たに追加された記事が上に表示されるため、ユーザーにもわかりやすく、同じ記事が常に同じ位置にある状態もなくせます。追記:こちら「チーズギャラリー」と「サボテンまとめ」でコードを利用しています。
記事の内容を更新するとトップページのサムネイルがソートされます。
いずれも『あまり記事の追加がなく、記事内の更新を行うブログ』なので、そのような場合におすすめです。