Йо-йо! В версии 5.2.0 в WordPress появилась новая функция и хук к ней. Суть функции заключается в том, что она позволяет напечатать произвольный код сразу после открывающегося тэга body.
На самом деле я пока не могу понять как использовать данный хук, кроме печати инициализатора для google tag manager, ведь только он просит включить его сразу после открывающегося тэга body. Если вы знаете другие скрипты, которые просят то же самое размещение, то напишите в комментариях.
Для того чтобы начать использовать wp_body_open, вам нужно прописать сразу после открывающего тэга body код. Выглядит это так:
<body <?php body_class(); ?>> <!-- Открывающий тэг body --> <?php if ( function_exists( 'wp_body_open' ) ) { // Проверка существования функции, она не существует до версии 5.2 wp_body_open(); } else { do_action( 'wp_body_open' ); // Вызываем как событие если нет функции }
Если вы всё же хотите использовать wp_body_open как функции, вы можете прописать в файле functions.php код:
if ( ! function_exists( 'wp_body_open' ) ) { function wp_body_open() { do_action( 'wp_body_open' ); } }
Тогда в body это будет выглядеть так
<body <?php body_class(); ?>> <!-- Открывающий тэг body --> <?php wp_body_open();
Объявляем в functions.php обработчик события и вперёд.
add_action( 'wp_body_open', 'xakpl_body_open_func', 10 ); function xakpl_body_open_func(){ // Печатаем произвольных код ?> <script>alert('Привет');</script> <?php }
На том месте где я написал скрипт, вы можете (должны) написать код для GTM. С версии 5.2 это единственный верный способ.
wp_enqueue_script('gtm', get_template_directory_uri() . '/gtm.js', array(), null, false); // gtm.js -файл с тем кодом, в папке темы
add_action( 'wp_body_open', 'xakpl_gtm_init', 10 ); function xakpl_gtm_init(){ ?> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TL3asd3" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <?php }
Вуаля. Вы мастер подключения скриптов в wp). Почти, но не совсем, если вы хотите более продвинуто уметь подключать скрипты в wp, то можете прочитать мою статью «Правильное подключение JS и CSS в WordPress«
Функция позволяет вам напечатать любой произвольный html, однако разработчики не рекомендуют его использовать ни для чего кроме печати скриптов
Usage of this hook should be reserved for output of unseen elements like <script>tags or additional metadata. It should not be used to add arbitrary HTML content to a page that could break layouts or lead to unexpected situations.
William Earnhardt
Перевести это можно так: Использование этого хука должно быть зарезервировано для вывода невидимых элементов, таких как тэги <script> или дополнительных мета-данных. Его не следует использовать для добавления произвольного содержимого HTML на страницу, т.к. оно может нарушить макеты или привести к неожиданным ситуациям.
Как вы считаете эта функция полезна или только для гиков?!