racl
  • 0
Новичок

Какой хук действия я могу использовать, чтобы добавить JavaScript в публикацию на странице, используя шаблон темы, который не включает ни get_header(), ни get_footer()?

  • 0

Итак, причина, по которой я не хочу включать get_header() или get_footer() теги, заключается в том, что эта страница будет загружена как iframe с использованием модального плагина Thickbox, а ее содержимое будет формой, и я не хочу, чтобы вышеупомянутые теги отображали все меню и изображения баннеров и меню, а также содержимое нижнего колонтитула, потому что на этой странице будет много прокрутки.

Однако в настоящее время я запускаю что-то вроде этого:

add_action('template_redirect', 'my_plugin_add_js');

Однако, когда я убираю теги get_header() and get_footer (), JavaScript не загружается, даже если javascripts внутри ‘ my_plugin_add_js ‘ добавляются в HTML-теги body в конце, а не внутри тегов head, например:

wp_register_script("validate_form", plugins_url('js/my_plugin_validate_form.js', __FILE__), array('jquery', 'validation'), '1.0', true);

Итак, я понимаю, что хук действия «template_redirect» не подходит для использования.

Share
  1. Полностью пропустить wp_head и wp_footer не кажется хорошей идеей, многие основные компоненты и плагины зависят от этих хуков. Вместо этого вы можете создать легкий заголовок и нижний колонтитул и загрузить их с помощью дополнительного аргумента для get_header() и get_footer() . get_header( 'light' ) будет загружаться header-light.php вместо обычного файла заголовка. Создайте одну без визуального заголовка других страниц, но оставьте wp_head действие без изменений.

    • 0
    • Хм, интересно. Я не знал, что могу загружать другие шаблоны заголовков через параметр функции. Я новичок в этой теме и разработке плагинов, и это будет удобно. В качестве альтернативы я подумал о выполнении с помощью пользовательского хука, который вызывает другой шаблон заголовка, легкий, как вы предложили, но, опять же, я не знал, что это может быть так же просто, как передача аргумента функциям get_header, get_footer. Спасибо, это помогает и решает мою дилемму.

      • 0
    • Сначала я думал сделать это, но подумал, что должен быть лучший способ сделать это. Тем не менее спасибо за предложение.

      • 0
  2. Дело не в хуке, который вы используете для настройки очереди (хотя вы должны использовать wp_enqueue_scripts вместо этого, но то, что вы делаете, также сломает это), а в том, что, удаляя верхний и нижний колонтитулы, вы также удаляете wp_head и wp_footer хуки, которые (среди прочего) обрабатывают вывод сценариев в очереди.

    Если ваш шаблон настолько минимален, вероятно, проще всего явно повторить ваш скрипт с помощью wp_print_scripts() (передайте дескриптор вашего скрипта).

    • 0
  3. Рассматривали ли вы возможность использования условного тега?

    Например:

    <?php if(is_page('your-page-name')) { ?>
    //inlcude script here
    <?php } ?>
    

    Подробнее об условных операторах: http://codex.wordpress.org/Conditional_Tags

    • 0

Оставить ответ

You must login to add an answer.