LoginSignup
5
2

More than 3 years have passed since last update.

WP2StaticにてクロールするURLを追加/削除する

Posted at

タイトルのままなのですが、WP2StaticにてクロールするURLを追加/削除するための
フィルターがあるので、そちらの紹介です。
公式ページには書いておらず、GitHubにあるドキュメントを読まないとわからないという…。
ちょっと調べるのも面倒だったので、こちらに書いておこうと思います。

wp2static_modify_initial_crawl_list

WP2StaticはクロールするURLが自動で生成されるのですが、クロールするURLを変更できるwp2static_modify_initial_crawl_listというフィルターフックが用意されています。

apply_filters(
    'wp2static_modify_initial_crawl_list',
    $url_queue
);

$url_queue にクロール対象になるURLが入ります。
最終的にこの変数をクロールさせたいURLのみにします。

サンプル

追加

追加したいURLがある時は$url_queueに追加して返します。
この場合は$additional_urlsで指定しているURLがクロール先として追加されます。
以下は公式にのっているものをちょちょっと書き直したものです。

function add_additional_urls( $url_queue ) 
{
    $additional_urls = [
        '/custom_link_1/',
        '/custom_link_2/',
    ];

    $url_queue = array_merge(
        $url_queue,
        $additional_urls
    );

    return $url_queue;

}
add_filter('wp2static_modify_initial_crawl_list', 'add_additional_urls');

削除

逆にクロールしてほしくないURLは$url_queueから削除します。
(いろいろやり方はあると思いますが、例を…。)

例:クロール対象のURLが以下で、entry_23をクロール対象外とする場合
/blog/entry_22/
/blog/entry_23/
/blog/entry_24/
/blog/entry_39/

function remove_extra_urls($url_queue) 
{
    $idx = array_search('/blog/entry_23/',$url_queue);
    if($idx !== false) 
    {
        array_splice($url_queue,$idx,1);
    }

    return $url_queue;
}

add_filter('wp2static_modify_initial_crawl_list', 'remove_extra_urls');

※書き方はいろいろあると思います…。最終的にクロールしてほしくないURLをぬいたものがreturnできていればよいです。

クロール対象は以下のURLになります。
/blog/entry_22/
/blog/entry_24/
/blog/entry_39/

注意事項など

add_filterで関数をひっかけていくのですが、追加/削除の関数を別にしている場合は
関数の実行順序管理をしっかりとしてないとちょっと泣きます。

WP2Staticの自動検出だと日付アーカイブはクロールされないので自分で作成した関数で追加し、テーマフォルダの中にあるjsなどを拾いに行ってしまうので、削除したり。
自動だとちょっと上手くいかない…というときはどうぞ。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2