5.7の新機能:Robots template登場!

説明

WordPress 5.7 Beta 1(以降Beta 1)」が公開され、1か月後には正式版がリリースされる。そんなBeta 1のソースコードを眺めていると、robots-template.phpファイルが追加されていた。

はじめに、この記事は公開された5.7 Beta 1をもとにしており、正式リリースの際に変更される可能性があることを予めお断りする。

wp_no_robots関数からwp_robots関数へ

robots-template.phpファイルに定義されている関数は次の通りである。

関数機能
wp_robotsクローラー向けのmeta要素を出力する
wp_robots_noindexwp_robotsフィルターのコールバック関数:「検索エンジンでの表示」が無効の場合にcontent属性にnoindexなどを適用する
wp_robots_no_robotswp_robotsフィルターのコールバック関数:content属性にnoindexとfollowまたはnofollowを適用する
wp_robots_sensitive_pagewp_robotsフィルターのコールバック関数:content属性にnoindexとnoarchiveを適用する
wp_robots_max_image_preview_largewp_robotsフィルターのコールバック関数:「検索エンジンでの表示」が有効の場合にcontent属性にmax-image-preview:largeを適用する

はじめに定義されているwp_robots関数が「肝」であり、その中ではwp_robotsフィルターにより、content属性を内容を決定して出力するようになっている。その他の4つの関数は、それぞれ add_filter関数で指定されるもので、 get_option関数で取得できる「検索エンジンでの表示」の設定に応じてcontent属性の指定を変更している。

get_option( 'blog_public' )

wp_robots関数の呼び出し

さてwp_robots関数の使い方だが、標準でwp_headアクションのコールバック関数の1つとして登録されており、テーマやプラグインから呼び出す必要はない。具体的には、通常のページ向けは次のように変更されている。

// 5.6.1
add_action( 'wp_head', 'noindex', 1 );
 ↓
// 5.7 Beta 1
add_filter( 'wp_robots', 'wp_robots_noindex' );
add_filter( 'wp_robots', 'wp_robots_max_image_preview_large' );
 :
 略
 :
add_action( 'wp_head', 'wp_robots', 1 );

またコメント返信時向けは、wp_headアクションではなく、先に紹介したwp_robotsフィルターで対応するように変更されている。

// 5.6.1
if ( isset( $_GET['replytocom'] ) ) {
	add_action( 'wp_head', 'wp_no_robots' );
}
 ↓
// 5.7 Beta 1
if ( isset( $_GET['replytocom'] ) ) {
	add_filter( 'wp_robots', 'wp_robots_no_robots' );
}

このような変更にともない、 noindex関数と wp_no_robots関数は5.7 Beta 1では非推奨になっている。

上記に加え5.7. Beta 1ではログインページ向けのアクションであるlogin_headアクションがwp-login.phpファイルからdefault-filters.phpファイルに移され、wp_robots関数が指定されている。

// 5.0.1~5.6.1 wp-login.php(login_header関数)
add_action( 'login_head', 'wp_sensitive_page_meta' );
 ↓
// 5.7 Beta 1 default-filters.php
add_action( 'login_head', 'wp_robots', 1 );

実際に出力されるmeta要素

実際に公開ページ(フロント側)とログインページにおいて「検索エンジンでの表示」の設定の違いを適用されているcontent属性の内容で確認してみる。

「検索エンジンでの表示」が有効「検索エンジンでの表示」が無効
5.7 Beta 1公開ページmax-image-preview:largenoindex, nofollow
ログインページmax-image-preview:large, noindex, noarchivenoindex, nofollow, noarchive
5.6.1公開ページ* meta要素なしnoindex,nofollow
ログインページnoindex,noarchivenoindex,noarchive

5.7 Beta 1では、「検索エンジンでの表示」が有効の場合に「max-image-preview:large」が必ず出力されている。また「検索エンジンでの表示」が無効の場合のログインページでは「nofollow」が追加されるといったところが従来バージョンとの違いといえる。


今回紹介したクローラー向けのmeta要素の変更は多くのテーマやプラグインではほとんど影響しないと思われるが、「変更される」ことは覚えておいたほうがいいだろう。明日にはBeta 2公開ですかね。


最終更新 : 2021年02月09日 13:10

お勧め

get_the_post_thumbnail_caption(2018年5月27日 更新)

string get_the_post_thumbnail_caption( mixed $post = null )
投稿ページのサムネイル(アイキャッチ画像)キャプションを取得する。

nocache_headers(2018年5月27日 更新)

void nocache_headers( )
ブラウザのキャッシュを無効にするHTTPヘッダーを出力する。

is_year(2018年5月27日 更新)

bool is_year( )
要求されているページが、年別アーカイブページ(リクエストURLが/2009のように、書式が「/年」の場合)か調べる。

get_custom_header_markup(2018年5月27日 更新)

string get_custom_header_markup()
カスタムヘッダーのHTMLパーツを取得する。

show_admin_bar(2012年1月5日 更新)

void show_admin_bar( bool $show )
ツールバー(admin bar)を強制的に表示/非表示する。