WordPress как на ладони

wp_footerхук-событиеWP 1.5.1

Срабатывает в подвале страницы. В момент этого события обычно подключаются скрипты, стили и т.д. Это один из основных хуков темы!

Кроме темы, это событие активно используется самим WordPress и многими плагинами.

Это событие вызывается одноименной функцией wp_footer(), которая в свою очередь вызывается в файле темы footer.php.

Вызов функции wp_footer() обязателен для всех тем (шаблонов) WordPress! Делается так:

    ...
	<?php wp_footer(); ?>
</body>
</html>

В момент этого события срабатывает очень много «родных» функций WordPress. Например, одна из таких функций добавляет подключенные через wp_enqueue_script() скрипты, для которых указано подключение в подвале.

Что срабатывает на этом хуке во фронтенде (по умолчанию в WordPress):

add_action( 'wp_footer', 'wp_print_footer_scripts', 20 );
add_action( 'wp_print_footer_scripts', '_wp_footer_scripts' );
add_action( 'wp_footer', 'wp_admin_bar_render', 1000 );

Есть еще одно аналогичное событие - wp_head. Оно вызывается функцией wp_head() в HEAD част документа, в файле header.php.

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

add_action( 'wp_footer', 'wp_kama_footer_action' );

/**
 * Function for `wp_footer` action-hook.
 * 
 * @return void
 */
function wp_kama_footer_action(){

	// action...
}

Примеры

0

#1 Выведем произвольный JS код в подвале

Это демонстрация того, как можно вывести JS код в конце HTML кода на любой странице сайта:

## JS в конце документа
add_action( 'wp_footer', 'hook_javascript', 99 );
function hook_javascript(){
	?>
	<script> alert('Page are loaded.'); </script>
	<?php
}

Или можно так (так даже правильнее, потому что сразу установлен приоритет побольше - 20):

## JS в конце документа
add_action( 'wp_print_footer_scripts', 'hook_javascript' );
function hook_javascript(){
	?>
	<script> alert('Page are loaded.'); </script>
	<?php
}
0

#2 Добавим HTML код в подвал

Допустим нам нужно на всех страницах добавить HTML код попапа:

<?php
add_action( 'wp_footer', 'my_popup', 30 );
function my_popup(){
	?>
	<div id="my_popup" class="popup mfp-hide">
		<div class="popup_inner">
			<div class="popup_body">
				<div class="popup_content"></div>
			</div>
		</div>
	</div>
	<?php
}

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

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

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

wp_footer()
wp_footer
wp-includes/general-template.php 3066
do_action( 'wp_footer' );

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

wp-includes/block-supports/duotone.php 53
add_action( 'wp_footer', array( 'WP_Duotone', 'output_footer_assets' ), 10 );
wp-includes/blocks/image.php 217
add_action( 'wp_footer', 'block_core_image_print_lightbox_overlay' );
wp-includes/class-wp-customize-manager.php 1944
add_action( 'wp_footer', array( $this, 'customize_preview_settings' ), 20 );
wp-includes/class-wp-customize-nav-menus.php 1351
add_action( 'wp_footer', array( $this, 'export_preview_data' ), 1 );
wp-includes/class-wp-customize-widgets.php 1193
add_action( 'wp_footer', array( $this, 'export_preview_data' ), 20 );
wp-includes/customize/class-wp-customize-selective-refresh.php 158
add_action( 'wp_footer', array( $this, 'export_preview_data' ), 1000 );
wp-includes/default-filters.php 351
add_action( 'wp_footer', 'wp_print_footer_scripts', 20 );
wp-includes/default-filters.php 600
add_action( 'wp_footer', 'wp_enqueue_global_styles', 1 );
wp-includes/default-filters.php 607
add_action( 'wp_footer', 'wp_enqueue_stored_styles', 1 );
wp-includes/default-filters.php 613
add_action( 'wp_footer', 'wp_maybe_inline_styles', 1 ); // Run for late-loaded styles in the footer.
wp-includes/default-filters.php 665
add_action( 'wp_footer', 'wp_admin_bar_render', 1000 ); // Back-compat for themes not using `wp_body_open`.
wp-includes/default-filters.php 721
add_action( 'wp_footer', 'the_block_template_skip_link' ); // Retained for backwards-compatibility. Unhooked by wp_enqueue_block_template_skip_link().
wp-includes/interactivity-api/class-wp-interactivity-api.php 210
add_action( 'wp_footer', array( $this, 'print_client_interactivity_data' ) );
wp-includes/interactivity-api/class-wp-interactivity-api.php 899
add_action( 'wp_footer', array( $this, 'print_router_loading_and_screen_reader_markup' ) );
wp-includes/media.php 2870
add_action( 'wp_footer', 'wp_underscore_playlist_templates', 0 );
wp-includes/media.php 4949
add_action( 'wp_footer', 'wp_print_media_templates' );
wp-includes/theme-templates.php 116
remove_action( 'wp_footer', 'the_block_template_skip_link' );
4 комментария
    Войти