Как добавить код сразу после открывающего тега body в Genesis framework

23 июл. 2012 г., 07:51:30
Просмотры: 19.6K
Голосов: 4

Нам нужно добавить два фрагмента кода: один сразу после открывающего тега body, а другой прямо перед закрывающим тегом body. Как это лучше сделать? Я изучил wp_enqueue_script, но похоже, что контент будет добавляться в секцию head.

0
Все ответы на вопрос 5
0
13

Вы вообще открывали файл header.php и заглядывали в него? Увидите вызов genesis_before() сразу после открывающего тега <body> - следуйте за белым кроликом и получите:

function genesis_before() { do_action('genesis_before'); }

И аналогично для футера. Итак...

add_action( 'genesis_before', 'im_a_lazy_copy_paster' );
add_action( 'genesis_after',  'im_a_lazy_copy_paster' );

function im_a_lazy_copy_paster() {
    if ( current_filter() == 'genesis_before' )
        echo '<script>party.start();</script>';
    else
        echo '<script>if ( cops.called() ) party.split();</script>';
}
23 июл. 2012 г. 13:10:04
0

Вы можете использовать плагин, например этот, чтобы отобразить все хуки Genesis: http://wordpress.org/plugins/genesis-visual-hook-guide/. Это позволит вам быстро найти нужный хук для модификации.

Затем измените хук в файле функций.

Также вы можете использовать плагин, который позволяет легко модифицировать хуки через админку WordPress: http://www.studiopress.com/plugins/simple-hooks

22 июн. 2013 г. 11:58:29
0

Вы были на правильном пути. Функция wp_enqueue_script принимает параметр in_footer, который определяет, должен ли ваш скрипт загружаться перед содержимым страницы или в конце тела страницы.

$in_footer: (логический) (необязательный) Обычно скрипты размещаются в секции <head>. Если этот параметр установлен в true, скрипт будет размещён внизу <body>. Для этого тема должна иметь хук wp_footer() в соответствующем месте. Обратите внимание, что вам нужно зарегистрировать скрипт до выполнения wp_head, даже если он будет размещён в подвале. По умолчанию: false

Вот ссылка на документацию в Codex: http://codex.wordpress.org/Function_Reference/wp_enqueue_script

23 июл. 2012 г. 10:28:59
1
  1. После открывающего тега body.

    add_action( 'genesis_before', 'my_genesis_script' );
    
    function my_genesis_script() {
    
    if ( current_filter() == 'genesis_before' )
    
    echo '<script>parties.over();</script>';
    
    }
    

Структурные хуки действий

genesis_before: Этот хук выполняется сразу после открывающего тега в исходном коде документа.

  1. Перед закрывающим тегом body:

Вы можете добавить скрипт в Genesis > Настройки темы > Скрипты в шапке и подвале и ввести скрипт, который должен выводиться через wp_footer().

Хук wp_footer() выполняется непосредственно перед закрывающим тегом в исходном коде документа.

13 сент. 2013 г. 21:56:43
Комментарии

Брэд, насколько мне известно, ты можешь убрать проверку current_filter(). В этом случае, если у тебя нет условных операторов внутри функции my_genesis_script(), проверка того, подключен ли фильтр к хуку, к которому ты подключаешься, внутри функции не требуется.

Bryan Willis Bryan Willis
17 янв. 2016 г. 15:19:13
0

Обновление для GenesisWP 3.3.1

Перейдите в файл header.php

?>
</head>
<?php
genesis_markup(
    [
        'open'    => '<body %s>',
        'context' => 'body',
    ]
);

if ( function_exists( 'wp_body_open' ) ) {
    wp_body_open();
}

echo '<script>parties.over();</script>';

/**
 * Срабатывает сразу после хука `wp_body_open`.
 *
 * @since 1.0.0
 */
do_action( 'genesis_before' )
7 апр. 2020 г. 20:33:15