Cuerda-Feed-total が出力する RSS では、channel/pubDate と channel/lastBuildDate が、
「このフィードが、いつから、どのようなリズムで動いているのか」を示す軸として機能します。
どちらも単なるサーバー時刻ではなく、「いまこの配信先に向けて公開されている記事群」を起点に計算されるよう設計されています。
ここでは、これらの日時要素をどのような考え方で決めているのか、そのロジックを整理してご説明します。
Cuerda-Feed-total が扱う RSS のチャンネルレベルの日時要素は、主に次の二つです。
channel/pubDate – フィードに含まれる記事のうち「もっとも新しい初回公開」を代表する時刻channel/lastBuildDate – フィードの内容が最後に変化したと見なせる時刻いずれも、単一の投稿から直接コピーするのではなく、 「この配信先向けフィードに、いま含まれるべき全ての記事」を一度洗い出したうえで、その集合から算出します。 この「まず対象記事を正しく絞り込む」という段階が、日時要素の精度を決める重要な前提になっています。
日時要素を決定する前に、Cuerda-Feed-total はまず「この配信先向けに、いま配信すべき記事」の集合を構築します。 この集合は、内部のクエリビルダーによって次のような条件を踏まえて組み立てられます。
publish)であること
このようにして、「いまこの瞬間に、この配信先が取得したとき、フィードに載るはずの投稿だけ」を対象にしたうえで、
channel/pubDate と channel/lastBuildDate を計算します。
フィードに含まれない投稿の更新や、配信対象外の下書きなどは、これらの日時には影響しません。
channel/pubDate は、そのフィードに含まれる記事群のうち、
「初めて一般公開された時刻」がもっとも新しい投稿を代表させるかたちで決定されます。
具体的には、次のような流れで値を求めます。
post_date_gmt(公開日時)を取得します。Tue, 10 Dec 2025 12:34:56 +0900)として出力します。
この設計により、channel/pubDate は「このフィードに載っている中で、いちばん新しい記事が世に出たのはいつか」を示す値になります。
既存記事の本文が細かく修正されただけでは、この値は変わりません。
あくまで「新しい記事が追加されたとき」に更新されることを目指したロジックです。
一方、channel/lastBuildDate は、フィードの内容が最後に変化したと見なせる時刻を表します。
ここでは、「新しい記事が追加されたかどうか」だけでなく、「既存の記事が更新されたか」「配信対象から外れたか」といった変化も考慮します。
Cuerda-Feed-total では、前述の対象記事集合に対して、次のような時間情報を手がかりに値を決定します。
post_modified_gmt)
これらのうち、もっとも新しい時刻を選び、それをサイトのタイムゾーンに変換したうえで、
channel/lastBuildDate として出力します。
その結果、次のようなケースで lastBuildDate が更新されることになります。
逆に、フィードの内容に一切変化がなかった期間については、
channel/lastBuildDate の値も変化しません。
これにより、配信先側は「このフィードを最後に取り込んだ日時」と比較することで、
効率的に更新有無を判定することができます。
channel/pubDate および channel/lastBuildDate は、どちらも RSS 仕様に則った RFC 822 形式で出力されます。
内部では UTC(GMT)基準で日時を集計し、最後に WordPress のタイムゾーン設定に従ってローカル時刻へ変換したうえで文字列化します。
これにより、サイト全体のタイムゾーン設定を変更した場合でも、 新たに生成されるフィードはその設定に従った日付表現に揃えられます。 既存の投稿データそのものは変わりませんが、フィードとしての見え方は常に最新の設定に追随します。
本ページではチャンネルレベルの日時要素に絞って説明しましたが、
個々の item 要素にも、それぞれの公開日時や更新を示すフィールドが存在します。
Cuerda-Feed-total では、まず記事単位の日時を正確に取り扱ったうえで、
その集合から代表値として channel/pubDate と channel/lastBuildDate を導き出す、という順序で処理を行っています。
item レベルの日時要素(記事ごとの pubDate や、配信先固有の更新日時要素)については、
別のページで個別に詳しくご説明します。
ここでは、Cuerda-Feed-total が「フィード全体としての時間」をどのように見立て、
チャンネルレベルの日時として表現しているか、その考え方をご理解いただければ十分です。
技術者向けの情報に戻る