Supported Distribution Keys
実装上の配信先キーは def, ynf, yjt, goo, dcm, spb, snf, gnf, lnr, ldn, isn, ant, trl である。
※ 2026年3月27日リリース・バージョン 4.0.24 の技術仕様書です。本仕様は予告なく変更される場合があります。
🔗trunk in cuerda-feed-total – WordPress Plugin Repository を見る
本書は、プラグインの目的、起動順序、配信経路、保存データ、フック、主要関数、外部連携、およびデバッグ方法をまとめた技術仕様書である。
ソース全体には概算で 26 個のクラス定義と 371 件前後の関数・メソッド定義が存在するため、本文では「グローバル関数」「公開メソッド」「重要な内部処理」を中心に扱い、残りは付録の索引で追跡する。
Cuerda-Feed-total は、WordPress 上の投稿を外部ニュース配信先向けフィードへ変換する配信プラグインである。単純な RSS 出力だけではなく、配信先ごとの XML 差分、本文整形、配信対象判定、投稿単位の除外制御、ライセンス確認、YNF 向け FTP 配信までを一体で担う。
| Capability | Summary | Primary Source Area |
|---|---|---|
| Admin UI | 基本設定、配信先別設定、ライセンス表示、投稿編集画面の配信制御 UI を提供する。 | includes/admin/ |
| Feed Dispatch | ?feed=cuerda_total&{isp} 形式のカスタムフィードを公開し、ISP ごとのジェネレータへ処理を委譲する。 |
includes/init.php, includes/rss/ |
| Content Transformation | 本文 HTML を配信先ルールに合わせて正規化・削除・タグ変換・埋め込み保全する。 | includes/rss/content/ |
| Distribution Policy | カテゴリ、タグ、著者、投稿 ID、投稿ステータス、投稿タイプを組み合わせて配信対象を決定する。 | includes/functions-utils.php, includes/rss/class-feed-query-builder.php |
| Revision Ledger | 投稿ごとの配信状態を cuerda_revision_status に保持し、差分配信や削除通知の判定に使う。 |
includes/functions-transition-ledger.php, includes/functions-utils.php |
| YNF Publisher | Yahoo! News 向け XML とアイキャッチを生成し、FTP/FTPS 経由で PUT 配信する。 | includes/ynf/, includes/rss/class-feed-generator-ynf.php |
| License Gate | cuerda.org のコントローラ API を参照し、配信先表示と実行可否を判定する。 |
includes/admin/class-api.php, includes/functions-license.php |
実装上の配信先キーは def, ynf, yjt, goo, dcm, spb, snf, gnf, lnr, ldn, isn, ant, trl である。
cuerda-feed-total.php がプラグインヘッダ、バージョン、主要パス定数を定義する。plugin_action_links_{plugin_basename} に設定リンクを追加する。includes/admin/class-admin.php、includes/loader.php、includes/init.php の存在確認を行い、欠落時は管理画面通知を出して静かに停止する。Cuerda_Loader::init() がプリロード対象クラス、関数ファイル、オートローダを初期化する。includes/loader.php の末尾で init フックに Cuerda_YNF_Publisher::init() を登録する。includes/init.php で do_feed_cuerda_total へコールバックを登録し、カスタムフィード入口を生成する。Cuerda_Installer::activate() / Cuerda_Installer::deactivate() へ委譲する。| Area | Main Files / Classes | Responsibility |
|---|---|---|
| Bootstrap | cuerda-feed-total.php, Cuerda_Loader |
ロード順序、依存ファイル読込、オートロード登録、起動エラーハンドリングを担う。 |
| Admin | Cuerda_Feed_Admin, Cuerda_Feed_Admin_Settings, Cuerda_Feed_Admin_Distribution, Cuerda_Feed_Admin_License, Cuerda_Feed_Admin_Options |
管理画面メニュー、設定フォーム、ライセンス表示、配信先別設定項目の描画を担う。 |
| Options / Sanitization | Cuerda_Options_Helper, includes/functions-sanitization.php |
オプションアクセスの軽量キャッシュ、型変換、保存時サニタイズを担う。 |
| Feed Core | Cuerda_Total_Feed_Dispatcher, Cuerda_Total_Feed_Generator_Wrapper, Cuerda_Total_Feed_Generator_Base |
公開フィードのディスパッチ、ライセンス判定、ジェネレータ選択、共通 RSS 出力を担う。 |
| Feed Rendering | Cuerda_Feed_Query_Builder, Cuerda_Feed_Channel_Renderer, Cuerda_Feed_Item_Renderer |
WP_Query 構築、channel 要素生成、item 要素生成を担う。 |
| Content Pipeline | Cuerda_Content_Config, Cuerda_Content_Renderer, Cuerda_Content_Processor, Cuerda_Content_Steps |
本文の整形ルール解決、代替テンプレート処理、タグ変換、埋め込み復元、許可 HTML 制御を担う。 |
| YNF Delivery | Cuerda_Feed_Generator_YNF, Cuerda_YNF_Publisher, Cuerda_YNF_Info_Endpoint |
Yahoo! News 用 XML 生成、Revision 管理、FTP PUT、結果表示用 text/plain エンドポイントを担う。 |
| Post Control | Cuerda_Post_Ctrl, includes/functions-transition-ledger.php |
投稿単位の配信除外 UI、REST/Classic の同期、除外時の revision 状態更新を担う。 |
| CLI / Maintenance | Cuerda_CLI_Validators, uninstall.php |
WP-CLI 検証コマンドとアンインストール時のデータ削除を担う。 |
init 時に do_feed_cuerda_total が登録される。transition_post_status、除外トグル、または WP-Cron 予約を契機に Cuerda_YNF_Publisher が起動する。Cuerda_Feed_Generator_YNF::build_single_post_xml() 経由で単票 XML を生成する。cuerda_total_* および cuerda_{isp}_* オプションを保存する。Cuerda_Post_Ctrl が配信除外フラグを Classic Editor と Block Editor の両方で扱う。cuerda_revision_status および補助 meta を更新する。?feed=cuerda_total&{isp}{isp} は GET パラメータの存在で判定される。?feed=cuerda_total&ynfCuerda_YNF_Info_Endpoint による text/plain の配信結果情報ページを返す。?feed=cuerda_total&{isp}&delta=1cuerda_total_enable_publish_delta フィルタが決める。?admin=true?cat=true / ?tag=true| Key | Display Name | Public Endpoint Behavior | Generator Path | Notes |
|---|---|---|---|---|
def |
RSS2.0 | 標準 RSS 2.0 XML を返す。 | Base Generator | 常時有効 ISP。公開 status は publish 固定。 |
ynf |
Yahoo! News (JAPAN) | 公開時は FTP 状況ページを text/plain で返す。 |
内部配信用 XML は Cuerda_Feed_Generator_YNF |
FTP/FTPS 配信、デバウンス、RevisionId 管理を持つ。 |
yjt |
Yahoo!JAPAN Timeline (JAPAN) | RSS 互換 XML を返す。 | Base Generator + feed-config.php |
JST タイムゾーンと独自 namespace を使う。 |
goo |
dmenu News (JAPAN) | RSS 互換 XML を返す。 | Base Generator | 本文整形と動画要素の条件分岐が多い。 |
dcm |
docomo media (JAPAN) | RSS 互換 XML を返す。 | Base Generator | table スタイル補正など一部 ISP 固有処理を持つ。 |
spb |
SPORTS BULL (JAPAN) | RSS 互換 XML を返す。 | Base Generator | SPORTS BULL 専用カテゴリマッピングを持つ。 |
snf |
Smart News (JAPAN) | RSS 互換 XML を返す。 | Base Generator | 広告スロットとロゴ関連オプションを持つ。 |
gnf |
Gnossy (JAPAN) | RSS 互換 XML を返す。 | Base Generator | Gunosy / NewsPass / au Service Today 系タグ除外ロジックを含む。 |
lnr |
LINE NEWS (JAPAN) | RSS 互換 XML を返す。 | Base Generator | 本文整形の比重が大きく、caption 正規化や allowed HTML 制御を利用する。 |
ldn |
Live Door News (JAPAN) | RSS 互換 XML を返す。 | Base Generator | feed-config による差分出力が中心。 |
isn |
Infoseek News (JAPAN) | RSS 互換 XML を返す。 | Base Generator | feed-config による差分出力が中心。 |
ant |
antenna* (JAPAN) | RSS 互換 XML を返す。 | Base Generator | expire オプション対象。 |
trl |
TRILL (JAPAN) | RSS 互換 XML を返す。 | Base Generator | 既定 post status が publish のみ。 |
注: ISP ごとの細かな要素差分は includes/rss/feed-config.php に集約され、本文変換差分は includes/rss/content/content-config.php および content-transform-map.php に集約される。
| Key / Pattern | Type | Purpose | Notes |
|---|---|---|---|
cuerda_total_* |
option | 全体設定。対象投稿ステータス、投稿タイプ、投稿画面の配信制御、有効 ISP、ログ opt-out などを保持する。 | 基本設定画面から保存される。 |
cuerda_{isp}_* |
option | 配信先別設定。タイトル、カテゴリ条件、関連リンク数、本文変換関連、FTP 設定などを保持する。 | 配信先別設定画面から保存される。 |
cuerda_ynf_category_{term_id} |
option | Yahoo! News 用カテゴリマッピングを保持する。 | マッピング設定の一部。 |
cuerda_controller_data |
transient | ライセンス API の取得結果キャッシュ。 | 短時間キャッシュ。Cuerda_Feed_API::fetch_controller_data() が使用する。 |
cuerda_cached_categories, cuerda_cached_tags, cuerda_cached_authors |
transient | 管理画面の選択補助一覧を 1 分キャッシュする。 | 配信設定フォームの描画負荷を下げる。 |
cuerda_feed_log_last_sent |
transient | 利用ログ送信のレート制御に使う。 | Feed Base Generator が使用する。 |
cuerda_total_last_delta_run_ts |
option | 差分配信モードの最終実行時刻を保持する。 | デルタクエリ構築時に参照される。 |
cuerda_ynf_result_info, cuerda_ynf_debug_info |
option | YNF 配信結果の要約と詳細ログを保持する。 | YNF 情報エンドポイントとパブリッシャが利用する。 |
cuerda_ynf_put_lock_{post_id}, cuerda_ynf_put_cooldown_{post_id}, cuerda_ynf_guard_{post_id} |
transient | YNF 配信の二重実行防止、直後連続実行抑止、アクティビティガードに使う。 | 投稿ごとの一時ロック。 |
Cuerda_Options_Helper は、get_option() 結果をリクエスト中キャッシュし、updated_option / added_option / deleted_option でピンポイントに無効化する。
| Key | Purpose | Lifecycle |
|---|---|---|
cuerda_revision_status |
配信先ごとの状態、更新時刻、YNF の revision 付帯情報などを JSON で保持する主キー。 | 主要な正本。統一保存先。 |
_cuerda_revision_status |
旧互換キー。 | 読み取り互換後に主キーへマージされ、削除される。 |
_cuerda_total_has_publish |
当該投稿が publish に関与したことがあるかを示すスカラー補助値。 | 差分配信と削除判定に使う。 |
_cuerda_total_touched_ts |
投稿が最後に触られた UNIX 時刻。 | 差分配信クエリの境界判定に使う。 |
_cuerda_total_demoted |
publish から非 publish に落ちた直後かを示す。 | 差分削除検知に使う。 |
_cuerda_post_exclude_{isp} |
投稿単位の配信除外フラグ。 | Classic / Block Editor 双方から更新される。 |
_cuerda_ynf_last_hash |
YNF 用 XML の前回ハッシュ。 | 冪等性と不要再送の抑止に使う。 |
_cuerda_ynf_first_sent |
YNF 初回送信時刻。 | DateId / FirstCreated 固定ロジックを補助する。 |
_cuerda_old_rev, _cuerda_old_modified |
旧版互換または過去実装由来の補助キー。 | 現行コードからの利用は限定的だが、アンインストール対象に含まれる。 |
cuerda_revision_status は REST 非公開かつ Custom Fields UI 非表示で扱われる。対して _cuerda_post_exclude_{isp} は Block Editor 連携のため REST 公開される。
配信状態は投稿ごとに JSON として保持される。実装上の形は固定スキーマではなく、total 領域と ISP ごとの領域を浅く持つ連想配列である。
{
"total": {
"from": "draft",
"to": "publish",
"has_publish": 1,
"updated": "2026-04-02 12:34:56"
},
"lnr": {
"status": 2,
"updated": "2026-04-02 12:35:01"
},
"ynf": {
"status": 2,
"rev": 3,
"date_id": "20260402",
"first_created_ts": 1775100000
}
}
uninstall.php は、単一サイト・マルチサイトの両方を考慮しながら、cuerda_* 系 option / transient と関連 post meta を削除する。ブランド接頭辞のホワイトリストを使い、削除対象を明示的に絞っている。
do_action() / apply_filters()| Hook | Type | Parameters / Return | Purpose | Primary Location |
|---|---|---|---|---|
cuerda_ynf_run_on_exclude_toggle |
action | (int $post_id) |
YNF 除外トグル時の即時再評価を発火する。 | includes/functions-transition-ledger.php |
cuerda_status_codes |
filter | array $codes, string $isp を受け取り配列を返す。 |
create / update / delete / excluded のコード体系を上書きする。 | includes/functions-utils.php |
cuerda_withdraw_on_exclude |
filter | bool $default, string $isp を受け取り真偽値を返す。 |
除外 ON を delete 扱いに寄せるかを制御する。 | includes/functions-utils.php |
cuerda/feed/content_type |
filter | string $content_type を返す。 |
レスポンスの Content-Type を調整する。 |
includes/rss/class-feed-dispatcher.php |
cuerda_total_enable_publish_delta |
filter | bool $requested, string $isp_key, array $args |
差分配信モードを有効にするかを決定する。 | includes/rss/class-feed-query-builder.php |
cuerda_feed_channel_max_ts_cache_ttl |
filter | int $ttl, array $post_types |
channel 日付計算結果のキャッシュ TTL を変更する。 | includes/rss/class-feed-channel-renderer.php |
cuerda_revision_status_code_delete |
filter | int $delete_code |
削除コードの解釈を変更する。 | includes/rss/class-feed-item-renderer.php |
cuerda_supported_video_isps |
filter | array $isps |
動画出力に対応する ISP 一覧を変更する。 | includes/rss/class-feed-item-renderer.php |
cuerda_goo_video_excluded_statuses |
filter | array $statuses |
動画除外ステータスの既定値を調整する。 | includes/rss/class-feed-item-renderer.php |
cuerda/content_renderer_callable |
filter | callable|null $callable, WP_Post $post, array $config, string $isp |
本文レンダラ差し替え点を提供する。 | includes/rss/class-feed-item-renderer.php |
cuerda_skip_allowed_html |
filter | bool $skip, string $isp |
allowed HTML 適用をスキップするかを制御する。 | includes/rss/content/class-content-processor.php |
cuerda/ynf/author_name |
filter | string $author_name, int $post_id |
YNF メタデータの著者名を変更する。 | includes/rss/helpers/ynf-metadata.php |
cuerda/ynf/article_type |
filter | string $article_type, int $post_id |
YNF メタデータの記事種別を変更する。 | includes/rss/helpers/ynf-metadata.php |
cuerda/ynf/priority |
filter | int $priority, int $post_id |
YNF 優先度を変更する。 | includes/rss/helpers/ynf-metadata.php |
cuerda/ynf/subject_code |
filter | string $subject_code, int $post_id |
YNF subject code を変更する。 | includes/rss/helpers/ynf-metadata.php |
cuerda/ynf/related_area |
filter | mixed $related_area, int $post_id |
YNF の地域情報を上書きする。 | includes/rss/helpers/ynf-metadata.php |
cuerda/ynf/property_items |
filter | array $items, int $post_id |
YNF Property 要素群を拡張する。 | includes/rss/helpers/ynf-metadata.php |
cuerda_ynf_should_handle_post |
filter | bool $default, int $post_id |
YNF Publisher の最終配信対象判定を差し替える。 | includes/ynf/class-ynf-publisher.php |
cuerda_ynf_build_xml_for_post |
filter | string $xml, int $post_id, array $args |
YNF 単票 XML の生成結果を外部から提供できるようにする。 | includes/ynf/class-ynf-publisher.php |
cuerda_ynf_build_filenames |
filter | array $names, int $post_id, array $context |
YNF XML / 画像のファイル名規則を差し替える。 | includes/ynf/class-ynf-publisher.php |
cuerda_ynf_hash_normalize_xml |
filter | string $normalized, string $raw_xml |
YNF 冪等性ハッシュの正規化ルールを差し替える。 | includes/ynf/class-ynf-publisher.php |
cuerda_ynf_debounce_seconds |
filter | int $seconds |
YNF 新規公開時のデバウンス秒数を変更する。 | includes/ynf/class-ynf-publisher.php |
| Hook | Type | Producer | Consumer | Purpose |
|---|---|---|---|---|
cuerda_ynf_run_debounced |
scheduled action | wp_schedule_single_event() |
Cuerda_YNF_Publisher::run_debounced() |
新規公開直後の YNF PUT を遅延実行する。 |
cuerda_ynf_purge_debug |
scheduled action | wp_schedule_event() |
Cuerda_YNF_Publisher::purge_debug_option() |
YNF デバッグログ option を毎日クリアする。 |
また、includes/functions-utils.php には cuerda_ynf_build_filenames と cuerda_ynf_should_handle_post に対する既定実装のフィルタ登録が含まれる。
| Hook | Primary Subscribers | Purpose |
|---|---|---|
plugin_action_links_{plugin_basename} |
cuerda_feed_add_settings_link() |
プラグイン一覧に設定リンクを追加する。 |
init |
cuerda_feed_total_init(), internal meta 登録クロージャ, Cuerda_YNF_Publisher::init() |
フィード登録、内部 meta 登録、YNF Publisher 初期化を行う。 |
do_feed_cuerda_total |
Dispatcher 起動クロージャ | カスタムフィード入口。 |
admin_menu |
Cuerda_Feed_Admin |
管理画面メニューを登録・再配置する。 |
admin_init |
Cuerda_Feed_Admin_Settings::register_settings(), cuerda_maybe_migrate_rev_status_once() |
設定登録と互換移行フラグ処理を行う。 |
admin_enqueue_scripts |
Cuerda_Feed_Admin::enqueue_admin_assets(), Cuerda_Post_Ctrl::admin_enqueue_editor() |
管理画面用 CSS / JS と投稿編集サイドバー統合を読み込む。 |
plugins_loaded |
Cuerda_Post_Ctrl::init() 内クロージャ |
配信除外 UI を必要時のみ遅延初期化する。 |
add_meta_boxes |
Cuerda_Post_Ctrl::add_metabox() |
Classic Editor 用の配信除外メタボックスを追加する。 |
save_post |
cuerda_handle_post_ctrl_on_save(), Cuerda_Post_Ctrl::save() |
配信除外保存と revision 状態更新を行う。 |
rest_after_insert_post |
Cuerda_Post_Ctrl::sync_rest_meta_to_db() |
Block Editor 経由の meta 保存を DB に確定同期する。 |
transition_post_status |
cuerda_on_transition_store_total(), Cuerda_YNF_Publisher::maybe_handle_transition() |
公開遷移履歴保存と YNF 配信トリガを行う。 |
updated_post_meta, added_post_meta, deleted_post_meta |
YNF 除外フラグ変更ハンドラ | Gutenberg / REST 経由の除外トグルを即時反映する。 |
shutdown |
Cuerda_YNF_Publisher::run_shutdown_queue() |
publish-to-publish 更新時の最終確定処理を行う。 |
is_protected_meta |
cuerda_hide_internal_meta_keys() |
内部 meta を Custom Fields UI から隠す。 |
updated_option, added_option, deleted_option |
Cuerda_Options_Helper |
request-local option cache を無効化する。 |
有効化・無効化フローは register_activation_hook() / register_deactivation_hook() により登録される。
| Hook | Usage | Primary Location |
|---|---|---|
the_content |
本文フィルタを適用した HTML を取得し、その後配信先別整形を行う。 | includes/rss/content/class-content-renderer.php, includes/rss/class-feed-generator-ynf.php |
本文では、保守上の重要度が高いグローバル関数、公開メソッド、重要な内部ワークフローを優先して記述する。
cuerda_feed_total_init()定義: includes/init.php
引数: なし / 戻り値: void
役割: do_feed_cuerda_total のコールバックを登録し、Dispatcher を呼び出すカスタムフィード入口を作る。
cuerda_get_distribution_options()定義: includes/functions-utils.php
引数: なし / 戻り値: array
役割: ISP キーと表示名の正本マップを返す。管理画面、ライセンス画面、フィード確認ボタンが共有利用する。
cuerda_get_general_settings( $code )定義: includes/functions-utils.php
引数: string $code / 戻り値: array
役割: 設定 UI のラベル、説明、既定値、最小値・最大値などをまとめて返す。
cuerda_get_revision_status_array( $post_id )定義: includes/functions-utils.php
引数: int $post_id / 戻り値: array
役割: cuerda_revision_status を配列化して返す。旧キー _cuerda_revision_status が残っていれば統合し、主キーへ寄せる。
cuerda_save_revision_status_array( $post_id, array $data )定義: includes/functions-utils.php
引数: int $post_id, array $data / 戻り値: void
役割: revision 状態配列を JSON 化して保存する。空配列なら関連 meta を削除する。
cuerda_matches_distribution_policy( int $post_id, string $isp )定義: includes/functions-utils.php
引数: 投稿 ID と ISP キー / 戻り値: bool
役割: 著者、カテゴリ、タグ、投稿 ID の include / exclude 条件を評価し、配信対象可否を判定する。
cuerda_get_status_codes( string $isp )定義: includes/functions-utils.php
引数: ISP キー / 戻り値: array
役割: revision 状態コードの既定値を返し、cuerda_status_codes フィルタで上書きを許可する。
cuerda_withdraw_on_exclude( string $isp )定義: includes/functions-utils.php
引数: ISP キー / 戻り値: bool
役割: 投稿除外を delete 相当に変換するかを返す。
cuerda_check_license_status( $isp )定義: includes/functions-license.php
引数: ISP キー / 戻り値: string
役割: 利用可能なライセンス一覧と比較し、valid または invalid を返す。
cuerda_display_license_status_notice()定義: includes/functions-license.php
引数: なし / 戻り値: void
役割: ライセンス API の応答状態に応じた管理画面 notice を出力する。
cuerda_output_admin_debug_comment( $isp, $request_uri )定義: includes/functions-admin-debug.php
引数: ISP キー、リクエスト URI / 戻り値: void
役割: ?admin=true 指定時に、バージョン、リクエスト情報、カテゴリ・タグ一覧、オプション値などをコメントとして埋め込む。
Cuerda_Loader::init()定義: includes/loader.php
引数: なし / 戻り値: void
役割: プリロード対象クラス、関数ファイル、PSR-4 風オートローダを初期化する。
Cuerda_Feed_API::fetch_controller_data()定義: includes/admin/class-api.php
引数: なし / 戻り値: array<string,mixed>
役割: cuerda.org のライセンスコントローラ API を読み、短時間 transient にキャッシュする。
Cuerda_Post_Ctrl::init()定義: includes/admin/class-post-ctrl.php
引数: なし / 戻り値: void
役割: 投稿編集画面の配信除外 UI、REST meta 登録、保存同期を必要時のみ起動する。
Cuerda_Post_Ctrl::is_allowed_for_isp( $post_or_id, $isp )定義: includes/admin/class-post-ctrl.php
引数: 投稿 ID または WP_Post、ISP キー / 戻り値: bool
役割: 投稿単位の配信除外フラグを評価し、出力可否を返す。
Cuerda_Total_Feed_Dispatcher::dispatch()定義: includes/rss/class-feed-dispatcher.php
引数: なし / 戻り値: void
役割: ISP 判定、YNF 特例分岐、フィード生成バッファリング、ヘッダ送信、最終 XML 出力を行う。
Cuerda_Total_Feed_Generator_Wrapper::generate()定義: includes/rss/class-feed-generator-wrapper.php
引数: なし / 戻り値: void
役割: ライセンス判定後、ISP ごとの custom generator または Base Generator へ委譲する。
Cuerda_Total_Feed_Generator_Base::generate()定義: includes/rss/class-feed-generator-base.php
引数: なし / 戻り値: void
役割: 共通 RSS 骨格、channel / item 出力、管理用デバッグ情報、利用ログ送信を行う。
Cuerda_Feed_Query_Builder::build( $isp_code )定義: includes/rss/class-feed-query-builder.php
引数: ISP キー / 戻り値: WP_Query
役割: 投稿タイプ、ステータス、author / term / post 条件、差分配信条件を最適化して最終クエリを返す。
Cuerda_Feed_Channel_Renderer::render( $isp, $config )定義: includes/rss/class-feed-channel-renderer.php
引数: ISP キー、設定配列 / 戻り値: void
役割: channel 要素、ロゴ、日付、description、item 出力の入口を担う。
Cuerda_Feed_Item_Renderer::render( $query, $config, $isp )定義: includes/rss/class-feed-item-renderer.php
引数: WP_Query、設定配列、ISP キー / 戻り値: void
役割: 各投稿の item 要素を組み立てる。除外トグル、future 扱い、削除通知、カテゴリ、動画、本文、関連記事の判定を含む。
Cuerda_Content_Config::get( $isp )定義: includes/rss/content/class-content-config.php
引数: ISP キー / 戻り値: array
役割: content-config.php の global と ISP 個別設定をマージして返す。
Cuerda_Content_Processor::process( $html, $isp, $cfg = array(), $post = null )定義: includes/rss/content/class-content-processor.php
引数: HTML、ISP キー、content 設定、投稿 / 戻り値: string
役割: 本文整形の中心。YouTube 追加、正規表現削除、埋め込み保全、タグ変換、allowed HTML 制御、画像・caption 補正などを一括実行する。
Cuerda_Content_Renderer::render( $post, $config, $isp, $ctx = array() )定義: includes/rss/content/class-content-renderer.php
引数: 投稿、feed-config、ISP キー、出力コンテキスト / 戻り値: void
役割: the_content フィルタ済み本文または代替テンプレートを取り込み、最終 XML 要素へ出力する。
Cuerda_Feed_Generator_YNF::generate()定義: includes/rss/class-feed-generator-ynf.php
引数: なし / 戻り値: void
役割: YNF 単票 XML を生成する。公開エンドポイントでは主にプレビューまたは空フィード返却用途で利用される。
Cuerda_Feed_Generator_YNF::build_single_post_xml( $post_id, $args = array() )定義: includes/rss/class-feed-generator-ynf.php
引数: 投稿 ID、追加引数 / 戻り値: string
役割: YNF Publisher から再利用される単票 XML ビルダ。
Cuerda_YNF_Publisher::init()定義: includes/ynf/class-ynf-publisher.php
引数: なし / 戻り値: void
役割: YNF 向けカスタムフック、コアフック、日次デバッグログクリアのスケジュールを登録する。
Cuerda_YNF_Publisher::maybe_handle_transition( $new, $old, $post )主要トリガ: transition_post_status
役割: YNF 配信可否、delete 判定、republish-as-new、ロック、クールダウン、ハッシュ比較、FTP PUT 実行までを統括する中核処理。
Cuerda_YNF_Publisher::build_xml_for_post( $post_id, array $args )役割: まず cuerda_ynf_build_xml_for_post フィルタを評価し、未提供なら Cuerda_Feed_Generator_YNF::build_single_post_xml() を呼ぶ。
Cuerda_YNF_Publisher::build_filenames( ... )役割: DateId、MediaId、NewsItemId、Revision を基にファイル名を作り、cuerda_ynf_build_filenames で上書きを許可する。
Cuerda_YNF_Publisher::ftp_put_all( array $args )役割: FTP/FTPS 接続、認証、パッシブモード化、画像 PUT、XML PUT を順番に実行する。
Cuerda_Feed_Query_Builder::maybe_apply_publish_delta_filters()役割: ?delta=1 などの要求を解釈し、_cuerda_total_touched_ts と publish / demoted 条件に基づく差分抽出へ切り替える。
| Integration | Endpoint Shape | Purpose |
|---|---|---|
| License Controller | https://cuerda.org/feed/user/{SERVER_NAME}/authentication/controller.json |
ライセンス状態と配信先表示可否の取得。 |
| Feed Log | https://cuerda.org/feed/user/{SERVER_NAME}/authentication/feed_cuerda_log.php |
フィード生成時の利用ログ送信。 |
HTTP 通信は wp_remote_get() を使用し、ライセンス API の失敗時は fail-safe / fallback 挙動を持つ。ユーザーは cuerda_total_optout_log により利用ログ送信を抑止できる。
YNF は、一般の公開フィードとは別に FTP または FTPS による push 配信を行う。接続先は cuerda_ynf_ftp_server, cuerda_ynf_ftp_user_name, cuerda_ynf_ftp_password, cuerda_ynf_ftp_remote_dir, cuerda_ynf_ftp_port, cuerda_ynf_ftp_secure で管理される。
パスワードは復号ヘルパー cuerda_decrypt_password() または cuerda_decrypt_value() を通じて取り扱われる。
YNF では WP-Cron を二段階で利用する。ひとつは新規公開直後のデバウンス送信、もうひとつは日次のデバッグログクリアである。
WP-CLI 環境では以下のコマンドが登録される。
wp cuerda validate-feed: 公開フィードの XML 妥当性検査wp cuerda ynf-related: YNF 関連リンクブロックの検査wp cuerda ynf-scan: 複数投稿の YNF 関連リンクルール検査wp cuerda post-ctrl: 投稿単位の配信除外状態の確認・補助本文生成はテーマ側の代替テンプレート出力を取り込める設計であり、Cuerda_Content_Processor::get_alternate_template_output() が入口となる。これにより、WordPress テーマ側で本文の供給元を差し替えられる。
| Situation | Behavior | Location |
|---|---|---|
| 必須ファイル欠落 | 管理画面 notice を出し、静かに停止する。 | cuerda-feed-total.php |
| Loader / init 関数欠落 | 管理画面 notice を出し、以降の処理を止める。 | cuerda-feed-total.php |
| 未指定または非対応 ISP | 500 を避けるため minimal RSS stub を返す。 | includes/rss/class-feed-dispatcher.php |
| ライセンス無効 | 公開フィードは minimal stub、YNF 情報ページは簡易エラーメッセージを返す。 | includes/rss/class-feed-generator-wrapper.php, includes/ynf/class-ynf-info-endpoint.php |
| YNF FTP 失敗 | 例外を結果要約と debug option に反映する。 | includes/ynf/class-ynf-publisher.php |
?admin=true でフィードへ管理情報を追記できる。?cat=true と ?tag=true でカテゴリ / タグ一覧を出力できる。cuerda_ynf_debug_info と cuerda_ynf_result_info に配信ログを保持する。_cuerda_total_touched_ts と _cuerda_total_demoted により削除系の取りこぼしを抑える。以下は主要クラスの索引である。本文に詳細がないものも、クラス名と所在ファイルの対応をここで追跡する。
Cuerda_Loader - includes/loader.phpCuerda_Options_Helper - includes/helpers/class-options-helper.phpCuerda_CLI_Validators - includes/cli/class-cli-validators.phpCuerda_Feed_Admin - includes/admin/class-admin.phpCuerda_Feed_Admin_Settings - includes/admin/class-admin-settings.phpCuerda_Feed_Admin_Distribution - includes/admin/class-admin-distribution.phpCuerda_Feed_Admin_License - includes/admin/class-admin-license.phpCuerda_Feed_Admin_Options - includes/admin/class-admin-options.phpCuerda_Feed_Admin_Mapping - includes/admin/class-admin-mapping.phpCuerda_Feed_API - includes/admin/class-api.phpCuerda_Post_Ctrl - includes/admin/class-post-ctrl.phpCuerda_Total_Feed_Dispatcher - includes/rss/class-feed-dispatcher.phpCuerda_Total_Feed_Generator_Wrapper - includes/rss/class-feed-generator-wrapper.phpCuerda_Total_Feed_Generator_Base - includes/rss/class-feed-generator-base.phpCuerda_Feed_Generator_YNF - includes/rss/class-feed-generator-ynf.phpCuerda_Feed_Query_Builder - includes/rss/class-feed-query-builder.phpCuerda_Feed_Channel_Renderer - includes/rss/class-feed-channel-renderer.phpCuerda_Feed_Item_Renderer - includes/rss/class-feed-item-renderer.phpCuerda_Content_Config - includes/rss/content/class-content-config.phpCuerda_Content_Renderer - includes/rss/content/class-content-renderer.phpCuerda_Content_Processor - includes/rss/content/class-content-processor.phpCuerda_Content_Pipeline - includes/rss/content/class-content-pipeline.phpCuerda_Content_Steps - includes/rss/content/class-content-steps.phpCuerda_Content_Embeds - includes/rss/content/content-embeds.phpCuerda_YNF_Publisher - includes/ynf/class-ynf-publisher.phpCuerda_YNF_Info_Endpoint - includes/ynf/class-ynf-info-endpoint.php本文に詳細を載せない関数群は、ファイル単位の索引として追跡する。
| File | Indexed Symbols |
|---|---|
includes/functions-sanitization.php |
cuerda_sanitize_* 系、暗号化パスワード処理、数値リスト正規化。 |
includes/functions-cache.php |
cuerda_get_cached_categories(), cuerda_get_cached_tags(), cuerda_get_cached_authors() |
includes/functions-license.php |
always-enabled ISP 判定、display ISP 一覧、license ISP 一覧、notice 表示。 |
includes/functions-transition-ledger.php |
投稿ステータス遷移追跡、publish delta 時刻管理、投稿除外反映、YNF トグル連携。 |
includes/functions-admin-debug.php |
管理デバッグ出力、カテゴリ・タグ一覧、option ダンプ、メモリ使用量表示。 |
includes/functions-admin.php |
管理画面の基本設定・配信先別設定項目定義。 |
includes/helpers/functions-crypto.php |
cuerda_crypto_key(), cuerda_encrypt_value(), cuerda_decrypt_value() |
includes/rss/helpers/ynf-metadata.php |
YNF メタデータ描画、subject code 解決、related area 推定。 |
includes/functions-utils.php |
配信先一覧、設定メタデータ、revision helpers、policy 判定、YNF ファイル名既定フィルタなど、多数の共通関数。 |
技術者向けの情報に戻る