wp_before_load_template
Срабатывает до подключения (вывода) шаблона.
locate_template() - это низкоуровневая функция для подключения шаблонов, на которых базируются такие функции как get_template_part(), а также get_header(), get_footer() и т.д.
Так же как и событие wp_before_load_template, событие wp_after_load_template позволяют, к примеру, замерить скорость подключения (генерации) шаблона (см. пример). Этим, например, пользуется плагин
для дебага Query Monitor.
Хук добавлен по тикету #54541.
Использование
add_action( 'wp_before_load_template', 'wp_kama_before_load_template_action', 10, 3 );
/**
* Function for `wp_before_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_before_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 Замерим скорость подключения (генерации) каждого файла шаблона
Получим в файле лога следующее (многоточие - начальная часть полнго пути к файлу, заменёно для краткости): Читайте также Измерение скорости (времени) выполнения php скрипта, а также о дебаге в WordPress.// До подключения шаблона
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.
)
)
Список изменений
| С версии 6.1.0 | Введена. |
Где вызывается хук
do_action( 'wp_before_load_template', $_template_file, $load_once, $args );