静的化対象に任意の URL を追加する

Shifterでは、サイト内の特定のURLをアーティファクトに追加する機能をサポートしています。これにより、WordPress REST APIのエンドポイントなど、通常の静的化プロセスで含まれないURLも静的サイトに含めることが可能です。

適用方法

テーマのfunctions.phpファイルに以下のフィルターを追加します。

add_filter( 'ShifterURLS::AppendURLtoAll', 'my_append_urls' );

制限事項

  • URLはWordPress内に存在する必要があります(Shifterは外部のURLを取得できません)。
  • URLはhome_url("")内に埋め込まれている必要があります。
  • URLはスラッシュ(トレイリングスラッシュ)で終わるか、以下のリストにあるサフィックスで終わる必要があります。
  • URLは/index.htmlとして生成されます。
  • コンテンツタイプは、ShifterがWordPressから取得したものと同じになります(例:/wp-json/wp/v2/posts//wp-json/wp/v2/posts/index.htmlとなり、content-type: application/jsonとして配信されます)。

許可されるファイルサフィックス

  • .html
  • .xml
  • .rss
  • .rdf
  • .atom
  • .css
  • .js
  • .json

サンプルコード A

/wp-json/wp/v2/posts/をジェネレーターの対象URLに追加する場合:

function my_append_urls( $urls ) {
    $urls[] = home_url('/wp-json/wp/v2/posts/');
    return $urls;
}
add_action( 'init', function(){
    add_filter( 'ShifterURLS::AppendURLtoAll', 'my_append_urls' );
} );

結果 A

上記のコードを適用すると、/wp-json/wp/v2/posts/が対象URLとして追加されます。

サンプルコード B

米国の各州の統計情報を/states/{slug}/として対象URLに追加する場合:

function my_append_urls( $urls ) {
    $states = [
        'Alabama',
        'Arizona',
        // ... 他の州名 ...
        'Wisconsin',
        'Wyoming',
    ];
    foreach ( $states as $slug ) {
        $urls[] = home_url("/states/{$slug}/");
    }
    return $urls;
}
add_action( 'init', function(){
    add_filter( 'ShifterURLS::AppendURLtoAll', 'my_append_urls' );
} );

この設定により、指定した各州のURLが静的サイトの生成対象として追加されます。