対象範囲タブ — post_type と route の選択
md サブドメインで Markdown 配信する 個別ページ (post_type) と 一覧ページ (route) をチェックボックスで選択するタブです。post_type と route は概念が異なる 2 軸で、個別に ON/OFF を切り替えます。
概要
「対象範囲」タブは WordPress 管理画面 → LLMO Markdown → 対象範囲 でアクセスできるタブです (URL: /wp-admin/admin.php?page=kashiwazaki-llmo-md&tab=content_targets)。一般タブで master switch を ON にした後の最初の選定が、ここでの「何を md 配信するか」の決定になります。
このタブは 2 種類のチェックボックス群 で構成されています:
- 対象 post_type — 個別ページ (1 件 1 件のページ) のうちどの post_type を配信対象にするか
- 対象アーカイブ・ルート — 個別ページではない一覧系ルートのうちどれを配信対象にするか
post_type と route の本質的な違い
| 観点 | post_type (個別ページ) | route (一覧ページ) |
|---|---|---|
| 本質 | WordPress の投稿エンティティ | WordPress のクエリ種別 (template hierarchy) |
| 対象例 | 各記事 (post)、各固定ページ (page)、各 CPT インスタンス | カテゴリー一覧、タグ一覧、月別アーカイブ、検索結果 |
| URL 例 | /2026/04/30/hello-world/ |
/category/news/ |
| Markdown 出力の Schema.org | Article / WebPage / NewsArticle / etc. | CollectionPage / ProfilePage / SearchResultsPage |
| option key | enabled_post_types |
enabled_routes |
画面構成
UI 部品の対応表
| セクション | UI 部品 | option key | 選択肢の生成元 |
|---|---|---|---|
| 有効化する post_type | checkbox 配列 | enabled_post_types (array of slug) |
get_post_types( ['public' => true], 'objects' ) |
| 有効化するルート | checkbox 配列 | enabled_routes (array of route key) |
固定の 10 種類 (archive / category / tag / term / author / date / home / front_page / search / feed) |
対象 post_type — 個別ページの選択
各 post_type ごとにチェックボックスが用意されており、チェックされた post_type のみが md サブドメインで個別に Markdown 化されます。
選択肢の決まり方
get_post_types( ['public' => true], 'objects' ) で取得した public な post_type のみ が選択肢に出ます。public => false な internal type (例: nav_menu_item, revision) や show_ui => false な不可視タイプは出ません。
標準の WordPress 環境では以下が出ます:
- 投稿
post— 通常の記事 - 固定ページ
page— 固定ページ - 添付ファイル
attachment— メディア (通常はチェックしない)
WooCommerce など CPT を持つプラグインを入れている環境では:
- 商品
product - イベント
event - その他自作 CPT
デフォルト値
初期設定では ['post', 'page'] がチェック済みです:
// admin/sections/content-targets.php (抜粋)
$enabled_types = isset( $opts['enabled_post_types'] )
? (array) $opts['enabled_post_types']
: array( 'post', 'page' );
つまり標準的なブログ運用ならデフォルト設定でいきなり始められる構造です。CPT を追加で配信したい場合のみ、ここで明示チェックを入れる運用です。
未公開や private なコンテンツの扱い
post_type のチェックは「この post_type のうち publish 状態のもの を md 配信対象にする」という意味です。個別記事の post_status が draft / private / future / pending のものは 個別ページとして md 化されません (404 になる)。これは md-resolver の段階でフィルタされます。
⚠️ Warning
attachment (添付ファイル) を配信対象にすると、メディアライブラリ内のすべての画像/PDF などのアタッチメントページが Markdown 化対象となります。通常は不要なのでチェックしないでください。
対象アーカイブ・ルート — 一覧ページの選択
ここでチェックされたルートだけが md サブドメインで一覧 Markdown として配信されます。 デフォルトはすべて ON 推奨 (プラグイン全体の master switch が唯一のセーフティ。配信したくない種別を個別に OFF) です。
10 種類の route 種別
本プラグインが管理する route は固定の 10 種類です。ソース (admin/sections/content-targets.php) では以下の順で定義されています:
| route key | WordPress クエリ条件 | 典型的な URL パターン | md 出力での Schema.org type (デフォルト) |
|---|---|---|---|
archive |
is_post_type_archive() |
/blog/, /products/ |
CollectionPage |
category |
is_category() |
/category/news/ |
CollectionPage |
tag |
is_tag() |
/tag/foo/ |
CollectionPage |
term |
is_tax() (上記以外のカスタム taxonomy) |
/{taxonomy}/{slug}/ |
CollectionPage |
author |
is_author() |
/author/jdoe/ |
ProfilePage |
date |
is_date() |
/2026/04/, /2026/ |
CollectionPage |
home |
is_home() (固定フロント以外のブログインデックス) |
/ または /blog/ |
WebSite |
front_page |
is_front_page() (固定フロントページ) |
/ |
WebSite |
search |
is_search() |
/?s=keyword |
SearchResultsPage |
feed |
is_feed() |
/feed/ |
(feed は専用処理) |
404 ルートは独立
📌 Note
404 (Not Found) ルートは対象範囲設定とは独立に常に動作します。URI がどのルートにも解決できない場合の最終フォールバックとして、Markdown 形式の 404 ページを返します (キャッシュなし)。これは UX (AI クローラ向けの一貫性ある応答) のため固定動作です。Schema.org type は「Schema.org タブ」で 404 route 別に変更可能です (デフォルト Thing)。
archive と home/front_page の使い分け
| サイト構成 | 表示 URL | 該当 route key |
|---|---|---|
| 「最新の投稿を表示」設定 | / |
home (= ブログインデックス) |
| 固定ページがフロントの場合 | / |
front_page |
| 固定ページがフロントの場合の投稿一覧 | /blog/ など指定したスラッグ |
home (こちらにシフト) |
| CPT (例: products) のアーカイブ | /products/ |
archive |
category / tag / term の関係
WordPress 標準のカテゴリーとタグ (category / post_tag taxonomy) は専用の route key (category / tag) で管理し、それ以外のカスタム taxonomy はまとめて term route で管理します。これにより、カテゴリーだけ md 配信して、独自 taxonomy は OFF にする — といった粒度の制御が可能です。
デフォルト値
// admin/sections/content-targets.php (抜粋)
$enabled_routes = isset( $opts['enabled_routes'] )
? (array) $opts['enabled_routes']
: array();
初期状態では enabled_routes は空配列です。チェックボックスは「明示的に ON にしたものだけが配信対象」というホワイトリスト方式になっています。チェックを入れないと一覧系の md ページは生成されません。
推奨は標準的な 7 種を最初に全部 ON にする運用です: archive / category / tag / author / date / home / search。term / front_page / feed は必要に応じて。
📝 alt-link との連動 (v2026-05 追加)
「出力」タブの「メイン側 md 並行版リンク (alt-link)」機能は、本タブの enabled_post_types / enabled_routes を参照します。
ここで OFF にされた post_type / route には alt-link も出力されません (md 側 resolver と整合、AI クローラへの誤誘導防止)。
例えば「page を md 化しない」設定の場合、メインサイトの page リクエストには Link: rel="alternate" ヘッダも HTML <link> タグも出力されません。
内部挙動 — 設定値の読まれ方
個別ページ (post_type) のフロー
- md サブドメインへのリクエスト到着
md-resolver.phpが URI を WP_Query に渡し、解決される post を取得- 取得した post の
post_typeをenabled_post_types配列と照合 - 含まれていなければ 404 (Markdown 形式)、含まれていれば Markdown 化処理へ
一覧ページ (route) のフロー
- md サブドメインへのリクエスト到着
- WP_Query が走り、
is_category()等で route 種別が判定される - 判定された route key が
enabled_routes配列に含まれていなければ 404 - 含まれていれば、対応する route renderer (
md-route-renderers.php) が起動
route renderer のディスパッチ
各 route はそれぞれ専用の関数で処理されます。includes/md-route-renderers.php の中で次のような関数が定義されています:
ksmd_render_archive_route()— post_type archiveksmd_render_term_route()— taxonomy term archiveksmd_render_author_route()— author archiveksmd_render_date_route()— date archiveksmd_render_home_route()— home / front_pageksmd_render_search_route()— search resultsksmd_render_feed_route()— feedksmd_render_404_route()— 404 (常時)
関連 filter
ksmd_archive_default_post_types
各 route 種別で「どの post_type をリストアップするか」のデフォルト集合を上書きする filter です。
/**
* @param array $list post_type slug の配列
* @param string $route_type route key (archive / home / category / tag / author / date)
* @param array $context context 情報 (term, author 等)
* @return array 上書き後の post_type 配列
*/
add_filter( 'ksmd_archive_default_post_types', function( $list, $route_type, $context ) {
if ( $route_type === 'home' ) {
// ホームでは post と独自 CPT 'review' を併記したい
return array( 'post', 'review' );
}
return $list;
}, 10, 3 );
ksmd_term_archive_post_types
カスタム taxonomy の term archive で、どの post_type を取り出すかを上書きします。
add_filter( 'ksmd_term_archive_post_types', function( $post_types, $term, $context ) {
if ( $term->taxonomy === 'product_cat' ) {
return array( 'product' );
}
return $post_types;
}, 10, 3 );
ksmd_archive_query_args
archive 系 route で発行される WP_Query の $args を上書きする最終 filter です。
/**
* @param array $args WP_Query の引数
* @param string $route_type archive / term / author / date / search / feed / home / front_page
* @param array $context context (term, author 等)
*/
add_filter( 'ksmd_archive_query_args', function( $args, $route_type, $context ) {
// 全 archive で投稿数を 50 件に増やしたい
$args['posts_per_page'] = 50;
return $args;
}, 10, 3 );
関連: その他の route 系 filter
ksmd_home_recent_post_type— ホーム route で最新投稿として列挙する post_typeksmd_home_intro_markdown— ホーム route のイントロ Markdown 上書きksmd_home_archive_links— ホーム route で表示するアーカイブリンク群の上書き
typical configurations
パターン A — 標準ブログ (post + page のみ)
enabled_post_types:['post', 'page'](デフォルト)enabled_routes:['home', 'archive', 'category', 'tag', 'author', 'date', 'search']
用途: 一般的な WordPress ブログサイト。固定ページ + 投稿で運用する標準構成。
パターン B — CPT を活用したマガジンサイト
enabled_post_types:['post', 'page', 'feature_article', 'review']enabled_routes:['home', 'archive', 'category', 'tag', 'term', 'author', 'date', 'search']
用途: 「特集記事」や「レビュー」など独自 CPT を持つメディアサイト。term ルートも ON にして CPT 専用 taxonomy のアーカイブも配信。
パターン C — EC サイト (商品のみ)
enabled_post_types:['product', 'page']enabled_routes:['archive', 'term', 'search']- +
ksmd_term_archive_post_typesfilter でproduct_catをproductに絞る
用途: WooCommerce 等で商品を AI クローラに伝えたいケース。投稿 (post) は配信せず、商品とそのカテゴリーアーカイブのみ。
パターン D — 著者プロフィールを重視するメディア
enabled_post_types:['post', 'page']enabled_routes:['home', 'archive', 'category', 'tag', 'author', 'search']- Schema.org タブで
authorルートの type をProfilePage(デフォルト) のままに
用途: 専門家ライターを多く抱えるメディアで E-E-A-T の Author 軸を強調したい場合。
よくある質問
Q. CPT を作っているのにチェックボックスに出てこない
A. register_post_type 時に 'public' => true が設定されているか確認してください。show_ui や publicly_queryable ではなく public です。
Q. 個別 post の md 配信を止めたいが post_type 全体は止めたくない
A. 個別 post 単位の除外は本タブではできません。ksmd_archive_query_args filter で post__not_in を渡す、もしくは別の filter (拡張ポイントタブ参照) で個別記事を弾く実装をしてください。または該当記事を draft / private / password 保護に変更すると md 配信されません。
Q. すべての route を OFF にしたら md.example.com/ はどうなる?
A. ホームに到達するため home route が必要です。OFF にすると 404 (Markdown 404 ページ) が返ります。最低限 home または front_page はチェックすることを推奨します。
Q. 404 ルートはどこで設定する?
A. 404 ルートは 対象範囲設定とは独立に常に動作 します。Schema.org type の選択のみ「Schema.org タブ」で行えます。
Q. category と term の違いは?
A. category は WordPress 標準の Category taxonomy、tag は標準の Post Tag taxonomy 専用です。それ以外のカスタム taxonomy (例: product_cat, genre, region) はすべて term route にまとめられます。
Q. attachment にチェックを入れたら何が起きる?
A. メディアライブラリの全アタッチメント (画像/PDF など) が個別 Markdown ページとして配信対象になります。通常はチェック不要です。AI に画像メタデータ (alt / caption / parent post) を伝えたい特殊なケースのみ ON 推奨。
Q. チェックを変更したら即時反映される?
A. 設定保存ボタンを押した瞬間に ksmd_settings option が更新されます。ただしキャッシュ済みの md ページは古い状態のままです。設定を変えたら「キャッシュタブ」から全 flush することを推奨します。
Q. feed 配信を ON にすると何が起きる?
A. https://md.example.com/feed/ 等のリクエストに対して、Markdown 形式の最新投稿一覧が返ります。RSS/Atom XML ではなく Markdown であることに注意。AI クローラ向けに「サイト全体の最新更新の Markdown ダイジェスト」を提供したい場合に有用です。
関連
- 一般タブ — master switch / md_host (このタブの前段)
- 出力タブ — Markdown インライン Schema.org のヘッダ/フッタ、ホームイントロ
- Schema.org タブ — post_type / route ごとの Schema.org type 選択
- キャッシュタブ — 設定変更後の flush
- アーキテクチャ — md-resolver と route renderer のディスパッチ
- 拡張ポイント —
ksmd_archive_default_post_types - 拡張ポイント —
ksmd_term_archive_post_types - 拡張ポイント —
ksmd_archive_query_args