投稿を更新日順に並べるfunctions.phpの記述 / 更新日を手動で調整する方法

WordPress 更新日順
記事について

WordPressの投稿一覧を更新日順で表示する方法を紹介しています。funcitons.phpの記述で、カテゴリー別、投稿タイプ別など、様々なカスタマイズが可能です。更新日を手動で調整する方法や便利なプラグインを紹介しています。

目次 🏃

投稿を更新日順に並べるfuntions.phpの記述

サイトによっては、投稿を更新日順に並べたいケースもあると思います。

ここでは、functions.phpの記述をメインに、更新日を手動で調整する方法を紹介しています。

コピペとプラグイン併用で簡単に実装できますので、興味のある方は試してみて下さい。

参考サイト How Do I Order Posts by Modified Date? : WordPress development

全てを更新日順にする

最も簡単な方法です。

お使いのテーマ・テンプレートのfuncions.phpに以下のように記述します。

is_main_query() ・・ WordPress内の全ての並びに対して。

$query->set( 'orderby', 'modified' ); ・・ 並び順をmodified(更新日)にセットする

function orderby_modified_posts( $query ) {
if($query->is_main_query()) {
$query->set( 'orderby', 'modified' );
}
}
add_action( 'pre_get_posts', 'orderby_modified_posts' );

トップページとカテゴリー&タグアーカイブを更新日順にする

投稿の並び順を、もう少し詳細に設定する記述です。

トップページとカテゴリー&タグ・アーカイブを更新日順にします。

is_home ・・ トップページ
is_category ・・ カテゴリー・アーカイブ
is_tag ・・ タグ・アーカイブ

function my_custom_ordering( $query ) {
if($query->is_main_query() AND !is_admin() ) {
if ( $query->is_home() || $query->is_category() || $query->is_tag() ){
$query->set( 'orderby', 'modified' );
}
}
}
add_action( 'pre_get_posts', 'my_custom_ordering' );

この記述を応用すれば、特定のカテゴリーや特定のタグ、特定のタームだけ、更新日順にすることもできます。

たとえば、映画カテゴリー『movie』のみ更新日順にする場合。

$query->is_category('movie')

と記述すれば、カテゴリー『movie』に属する投稿一覧だけが更新日順になります。

条件分岐の記述の仕方は、下記URLで詳しく紹介されているので、ぜひ参考にして下さい。

参考サイト
【保存版】WordPressの条件分岐まとめ【42選】 WordPressのカスタマイズでよく使う条件分岐を41個まとめてみました。条件分岐を知れば、カスタマイズの幅がグンと広がります。参考にしてください。

また、 $query->set( 'orderby', 'modified' ); の記述を変えれば、タイトル順、ID順、ランダムなど、様々なアレンジが可能です。

タイトル順にしたい場合。

$query->set( 'orderby', 'title' );

ID順にしたい場合。

$query->set( 'orderby', 'ID' );

orderby の書き方は、WordPress公式の関数リファレンスの『順序づけパラメータ』に詳しく紹介されています。

トップページ、検索結果、タグ・カテゴリーのアーカイブを更新日順にする

上記と重複しますが、in_home(トップページ)、is_search(検索結果)、 is_archive(タグ・カテゴリーのアーカイブ)について、更新日順にする記述です。

ここでも、!is_admin を明記して、管理画面で並び順は除外しています。

function themesdna_sort_posts_by_modified_date( $query ) {
if( $query->is_main_query() && ! is_admin() && ( $query->is_home() || $query->is_search() || $query->is_archive() ) ) {
$query->set( 'orderby', 'modified' );
$query->set( 'order', 'DESC' );
}
}
add_action( 'pre_get_posts', 'themesdna_sort_posts_by_modified_date' );

カスタム投稿だけ更新日順にする

カスタム投稿だけ更新日順にすることもできます。

たとえば、小説用のカスタム投稿『novel』,カテゴリー『fantasy』について、ストーリー順に並べたい場合。

カスタムフィールドのメタキーに『story』、値にストーリー番号(例・ 001 002 003 004・・)を設定し、orderbyを『meta_value_num』(数字順)にすることで、日付に関係なく、投稿をストーリー順に並べることができます。

また、orderで、ASC(昇順)と設定すれば、投稿の並び順が最初から最大へ、数字順に並びます。

function twpp_change_sort_order( $query ) {
if ( $query->is_category('fantasy') ) {
$query->set('meta_key', 'story');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'ASC');
$query->set( 'post_type', 'novel' );
}
}
add_action( 'pre_get_posts', 'twpp_change_sort_order' );

更新日順のカスタマイズは、下記URLでも詳しく紹介されていますので、ぜひ参考になさって下さい。

参考サイト
ワードプレスの記事一覧を更新日時順で表示する方法!カスタマイズも簡単にできる ワードプレスで表示される記事の一覧は、通常「公開日順」で表示されると思いますが、記事を公開した後に修正して更新した場合、「せっかく更新したんだから先頭に表示した...

どうしても反映されない・・

お使いのテーマ・テンプレートによっては、狙い通りに表示されない事があります。

また、『Code Snippet』のようなプラグインを使っていると、プラグイン独自の処理が優先される為、記述が効かない事があります。

そのような場合は、他の記述を試せば上手くいくことがあります。

どうしても見つからない場合は、

『WordPress post order modified funtions.php』といったキーワードで検索すれば、いろんな記述が見つかります。

3つ、4つ、試すうちに、どれかの記述で上手くいきます。

海外でも、同じ質問をしている人がたくさんいるので、考えることは、皆、同じみたいです。

投稿順を入れ替えるプラグインは遣わない方がいい

プラグインの中には、『Simple Custom Post Order』や『Post Types Order』のように、管理画面の投稿一覧から、ドラッグ&ドロップで投稿の順番を入れ替えるものがありますが、投稿数が多い場合、非常に操作が煩わしいのと、「管理画面が重くなる」「他の機能とコンフリクトする」、等々、問題も多いので、あまりおすすめしません。

どうしても、個別に投稿の順番を入れ替えたい場合は、全体を『更新日順』にして、細かな並びは日付で調整する方がいいと思います。

更新日を手動で調整する

投稿の更新日は、編集画面で『更新』をクリックした時だけでなく、管理パネルでタグやスラッグを変更するだけでも、更新日が変わってしまうことがあります。

また、本文を一行訂正しただけでも、更新日が変わってしまうので、場合によっては非常に不便です。

そこで、更新日を手動で調整する方法を二つ紹介します。

不要な更新を避け、大幅にリライトを加えた時だけ、更新日を新たにすることができます。

プラグインを使う

更新日をコントロールするプラグインでは、『WP Last Modified Info』が最も有名ですが、機能てんこもりで、個人サイトでは過剰な気もします。

Limit Modified Date』も、軽量で、便利なプラグインですが、管理パネルでメタデータやタグを変更しただけで、更新日が書き換わってしまうので、これも微妙でした。

私の一押しは、『Stealth Update』です。

利用者も少なく、開発も六年前で止まっていますが、これが確実に更新日の書き換えを抑止します。

非常に軽量で、他のプラグインとバッティングすることもないので、興味のある方はぜひ。
※ 開発者もWordPress黎明期からユニークなプラグインを多数開発しています。

Stealth Update を常に『ON』にして、予期せぬ日付更新日の変更を避ける場合は、次の一行をfuncions.phpに追記します。

add_filter( 'c2c_stealth_update_default', '__return_true' );

functions.phpに記述する

ネットですでにたくさんの情報が出回っていますが、一番信頼できるのは、無料テーマ・テンプレート 『Cocoon』でお馴染みの、わいひらさん。

あわせて読みたい

わいひらさんのコードをさらに拡張した、『Luxeritas Theme』のるなさんの記述方法です。

Thought is free
WordPress 記事の更新日時を自由に変更する:改造版 | Thought is free 2015/02/04 追記: ブログ書く際にソースがメチャ重複してました。修正しました orz 2016/04/27 追記: WpTHK に搭載してるものと(ほぼ)同じ内容に変更...

わいひらさんのコードが『更新する / しない』の二択に対し、るなさんの記述は、更新日の変更もできる仕様になっています。

それぞれ内容をチェックして、自分に合った記述を採用して下さい。

サイトで紹介されているコードを、まるっとコピペするだけです。

ウィジェットの新着記事を更新日で表示する

WordPress標準の『最近の投稿』を更新日順に表示することもできます。

以下のコードを、functions.phpに記述します。

ただし、お使いのテーマ・テンプレート付属の『最新の投稿』系ウィジェットには利かないことがあります。(テーマ独自のコードで処理される為)

//新着ウィジェットを更新日で
add_filter('widget_posts_args', function($args) {
$args['orderby'] = 'modified';
return $args;
});

フィードの投稿を更新日順にする

RSSフィードの投稿を更新日順にする方法もあります。

下記のサイトで紹介されています。

Order WordPress RSS feed by modified rather than published

ちょっと変わった記述なので、違和感もありますが、私の環境ではOKでした。

興味のある方は試してみて下さい。

個人的には、頻繁にリライトするサイト向きです。

function wpse49312_alter_the_query( $request )
{
$dummy_query = new WP_Query();
$dummy_query->parse_query($request);

if($dummy_query->is_feed())
$request['orderby'] = 'modified';

return $request;
}
add_filter('request', 'wpse49312_alter_the_query');

投稿の並び順をもっと細かくカスタマイズ

自分でfunctions.phpの記述が心配な方は、プラグインを使いましょう。

私のおすすめは、『Posts Order』です。

https://ja.wordpress.org/plugins/category-custom-post-order/

これも開発が止まっているのですが、最新版のWordPressでも問題なく使えます。

インストールしたら、『設定』→『Posts Order』を開いて、『トップページ』『カテゴリーアーカイブ』の投稿の並び順を選びます。

Posts Order フロントページとカテゴリーアーカイブの並び順

また、各カテゴリー・タグのアーカイブでも個別に設定できるので、細かく使い分けたい場合に便利です。

各カテゴリー・タグの『編集』ページの下方に、投稿の並び順を設定するメニューが現れるので、個別に選んで設定して下さい。

ただし、このプラグインは、親子関係のあるカテゴリーでは上手く機能しません。

設定するなら、『カテゴリー全体』という形になります。

Posts Order カテゴリー・タグアーカイブの投稿の並び順

まとめ : リライトはおすすめ

サイトの種類にもよりますが、近年は、むやみに投稿数を増やすより、ユニークかつ専門性の高いページに絞り込んだ方が、検索結果に引っかかりやすいです。

以前は、日記みたいなブログ記事でも、どんどんインデックスされましたが、ここ数年は、投稿内に目立ったトピックがなければ、ガン無視されて、インデックスもされない状態が続いています。

なので、過去記事のリライトは非常に有効ですし、それに合わせて、サイトも更新日順にするといいと思います。

リピーターの反応が気になるなら、どこを、どう訂正したのか、更新情報を出せば分かりやすいです。

一説によると、更新日は新しいのに、本文にほとんど変わりがないと、Googleも怪しむそうです。

検索結果で、情報の鮮度が重視されることを利用して、日付だけ、がんがん更新する裏技はスパム扱いとか(まあ、そうなるでしょうね)

しかし、WordPressの仕様として,タグを変更しただけで更新日が変わることがありますし、個人的には、Stealth Updateやfunctions.phpの記述で、手動でコントロールするのがベストかなと思っています。

本当に重要なリライトをした時だけ、Googleに更新日を通知した方が、効果的ではないかと。

もちろん、訪問者にとっても、です。

そのあたり、自身のサイトに合わせて、いろいろ工夫して下さい🐣

WordPressのタグ :

Kindleストア

Kindleストア

ジャンルはSFですが古典的なスタイルの長編小説です。海外翻訳文学が好きな方に向いています。
サイトで気軽に試し読みできます。

📔 無料で読めるPDFサンプルはこちら

目次 🏃