対象範囲タブ — 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 種類のチェックボックス群 で構成されています:

  1. 対象 post_type — 個別ページ (1 件 1 件のページ) のうちどの post_type を配信対象にするか
  2. 対象アーカイブ・ルート — 個別ページではない一覧系ルートのうちどれを配信対象にするか

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

画面構成

対象範囲タブの全景
図: 対象範囲タブの全景。上半分が post_type、下半分が route のチェックボックス群です。public な post_type のみが選択肢として列挙されます。
対象範囲タブの概念図
図: post_type 軸と route 軸の 2 次元で配信範囲を決める概念図。両軸の AND で「md 配信するか否か」が決まります。

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 環境では以下が出ます:

WooCommerce など 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_statusdraft / 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) のフロー

  1. md サブドメインへのリクエスト到着
  2. md-resolver.php が URI を WP_Query に渡し、解決される post を取得
  3. 取得した post の post_typeenabled_post_types 配列と照合
  4. 含まれていなければ 404 (Markdown 形式)、含まれていれば Markdown 化処理へ

一覧ページ (route) のフロー

  1. md サブドメインへのリクエスト到着
  2. WP_Query が走り、is_category() 等で route 種別が判定される
  3. 判定された route key が enabled_routes 配列に含まれていなければ 404
  4. 含まれていれば、対応する route renderer (md-route-renderers.php) が起動

route renderer のディスパッチ

各 route はそれぞれ専用の関数で処理されます。includes/md-route-renderers.php の中で次のような関数が定義されています:

関連 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

typical configurations

パターン A — 標準ブログ (post + page のみ)

用途: 一般的な WordPress ブログサイト。固定ページ + 投稿で運用する標準構成。

パターン B — CPT を活用したマガジンサイト

用途: 「特集記事」や「レビュー」など独自 CPT を持つメディアサイト。term ルートも ON にして CPT 専用 taxonomy のアーカイブも配信。

パターン C — EC サイト (商品のみ)

用途: WooCommerce 等で商品を AI クローラに伝えたいケース。投稿 (post) は配信せず、商品とそのカテゴリーアーカイブのみ。

パターン D — 著者プロフィールを重視するメディア

用途: 専門家ライターを多く抱えるメディアで E-E-A-T の Author 軸を強調したい場合。

よくある質問

Q. CPT を作っているのにチェックボックスに出てこない

A. register_post_type 時に 'public' => true が設定されているか確認してください。show_uipublicly_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 ダイジェスト」を提供したい場合に有用です。

関連