wp_after_load_template │ хук-событие │ WP 6.1.0

Click here to view original web page at wp-kama.ru

Срабатывает после подключения (вывода) шаблона.

locate_template() - это низкоуровневая функция для подключения шаблонов, на которых базируются такие функции как get_template_part(), а также get_header(), get_footer() и т.д. В купе с событием wp_before_load_template, событие wp_after_load_template позволяют, к примеру, замерить скорость подключения (генерации) шаблона (см. пример). Этим и пользуется дебаг-плагин Query Monitor.

Хук добавлен благодаря тикету #54541.

Использование

add_action( 'wp_after_load_template', 'wp_kama_after_load_template_action', 10, 3 );

/**
 * Function for `wp_after_load_template` action-hook.
 * 
 * @param string $_template_file The full path to the template file.
 * @param bool   $load_once      Whether to require_once or require.
 * @param array  $args           Additional arguments passed to the template.
 *
 * @return void
 */
function wp_kama_after_load_template_action( $_template_file, $load_once, $args ){

	// action...
}
$_template_file(строка)
Полный путь к файлу шаблона, например /home/site/www/wp-content/themes/mytheme/myfile.php.
$load_once(true|false)
true - шаблон подключался с помощью require_once.
false - шаблон подключался с помощью require.
$args(массив)
Дополнительные параметры, которые были переданы в подключаемый файл.

Примеры

#1 Замерим скорость подключения (генерации) каждого файла шаблона

// До подключения шаблона
add_action( 'wp_before_load_template', 'wpkama_load_template_timer' );

// После подключения шаблона
add_action( 'wp_after_load_template', 'wpkama_load_template_timer' );

// выводим собранные данные в лог файл
register_shutdown_function( 'wpkama_load_template_timer' );

function wpkama_load_template_timer( $file = null ){
	static $files_start_times = [];
	static $result = [];

	if( doing_action( 'wp_before_load_template' ) ){
		$files_start_times[ $file ] = microtime( true );
		return;
	}

	if( doing_action( 'wp_after_load_template' ) ){
		$result[ $file ][] = sprintf( '%.6f sec.', microtime( true ) - $files_start_times[ $file ] );
		return;
	}

	// shutdown
	error_log( print_r( $result, true ) );
}

Получим в файле лога следующее (многоточие - начальная часть полнго пути к файлу, заменёно для краткости):

Array
(
	[.../templates/parts/header/svg.php] => Array
		(
			[0] => 0.000394 sec.
		)

	[.../templates/parts/header/header.php] => Array
		(
			[0] => 0.010713 sec.
		)

	[.../templates/event/archive/parts/event-card-full.php] => Array
		(
			[0] => 0.000572 sec.
			[1] => 0.000530 sec.
		)

	[.../templates/event/single/parts/upcoming-events.php] => Array
		(
			[0] => 0.006188 sec.
		)

	[.../templates/event/single/parts/schedule.php] => Array
		(
			[0] => 0.000237 sec.
		)

	[.../templates/parts/btn-to-top.php] => Array
		(
			[0] => 0.000124 sec.
		)

	[.../templates/parts/footer/footer.php] => Array
		(
			[0] => 0.005845 sec.
		)

)

Читайте также Измерение скорости (времени) выполнения php скрипта, а также о дебаге в WordPress.

Список изменений

С версии 6.1.0Введена.

Где вызывается хук

load_template()

wp_before_load_template

wp_after_load_template

wp-includes/template.php 797

do_action( 'wp_after_load_template', $_template_file, $load_once, $args );

Где используется хук в WordPress

Использование не найдено.