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が静的サイトの生成対象として追加されます。