この記事は最後に更新してから1年以上経過しています。

5.5の機能強化:テンプレートパーツの取得関連

説明

来月にリリースされるWordPress 5.5に向けてBeta 1~4と公開が続いている。「WordPress 5.5 Beta 4(以降Beta 4)」のソースコードを見ていくと、テンプレートパーツを取得する関数にパラメータが追加されていた。

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

追加されるパラメータの影響

今回パラメータが追加された関数は、テンプレートパーツを取得するか、それに関連するものである。具体的な例として get_header関数の宣言は次のように変更されている。

function get_header( $name = null, $args = array() ) {

青字の$argsが追加されたパラメータであり、その内容は配列となる。追加されたパラメータ$argsは、関数中のアクションにも影響を与えている。

関数アクション
get_headerdo_action( 'get_header', $name, $args );
get_footerdo_action( 'get_footer', $name, $args );
get_sidebardo_action( 'get_sidebar', $name, $args );
get_template_partdo_action( "get_template_part_{$slug}", $slug, $name, $args );
do_action( 'get_template_part', $slug, $name, $templates, $args );

パラメータ$argsはテンプレートパーツを読み込む locate_template関数のパラメータとして引き継がれ、最終的にテンプレートパーツファイルを読み込む load_template関数へ引き継がれる。このパラメータ$argsが一連の処理の流れの中で何かに使用される様子はないが、テンプレートパーツからアクセス可能である。

このことを確認のため、標準テーマ「Twenty Twenty」のindex.phpにあるget_header関数のパラメータを追加する

get_header( null, array( 'test' => 'OK' ) );

続いてheader.phpに次の行を追加する。

var_dump( $args );

ブラウザでトップページにアクセスし、出力されたHTMLソースを確認。index.phpのget_header関数に指定した配列の内容がheader.phpで出力されている。

array(1) {
  ["test"]=>
  string(2) "OK"
}

返り値がfalse

上記の4つの関数はもう1つ変更されている。それは各関数で呼ばれているlocate_template関数の返り値を判定し、その返り値が''(テンプレートパーツのファイルが存在しない)の場合は各関数の返り値としてfalseを返すようになったことである。

if ( ! locate_template( $templates, true, false, $args ) ) {
	return false;
}

なおテンプレートパーツのファイルが読み込まれた場合は何も返さない(nullが返る)ので、テンプレートファイルで判定する場合はfalseかどうかの判定となる。


最終更新 : 2020年08月12日 08:26


お勧め

is_paged(2018年5月27日 更新)

bool is_paged( )
要求されているページが、分割された2ページ目以降(リクエストURLが/[任意]/page/2のような場合)か調べる。

get_next_image_link(2021年7月25日 更新)

string get_next_image_link( [ string | int[] $size = 'thumbnail' [ , string | false $text = false ] ] )
次の添付ファイルへのリンクを取得する。

site_url(2021年7月23日 更新)

string site_url( [ string $path = '' [ , string $scheme = null ] ] )
現在のブログ(サイト)のサイトURLを取得する。サイトURLは、管理者ページの「設定」-「一般」の「WordPressのアドレス(URL)」のこと。

get_dirsize(2019年5月9日 更新)

int | bool get_dirsize( string $directory [ , int $max_execution_time = null ] )
ディレクトリの使用量を取得する。

nocache_headers(2018年5月27日 更新)

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