wp_footer () не работает без wp_head ()?

Я использую простой метод ajax для загрузки контента на сайт WordPress: я ловлю клики по ссылкам навигации и добавляю параметр GET в URL:

jQuery('#topnav a').click(function(e){
e.preventDefault();
url = jQuery(this).attr('href');
jQuery.ajax({
type: 'GET',
url: url,
data: 'naked=1', // my parameter
dataType: 'html',
success: function(data){
jQuery('#content').html(data); // load new content
});
}
});
});

После того, как я проверил этот параметр в шаблонах WordPress и, если этот параметр существует, я не включаю верхний и нижний колонтитулы и загружаю голое содержимое:

<?php
/**
* page.php
* @package WordPress
* @subpackage clean
*/
if (!isset($_GET['naked'])) get_header(); // if parameter exist do not load header ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); // cycle wp start ?>
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
<?php endwhile; // cycle wp end
if (!isset($_GET['naked'])) get_footer(); // if parameter exist do not load footer ?>

Этот метод работал нормально, но если страница содержит шорткод contactform7, форма отправки ajax не работает, потому что footer.php не включает в себя js сотрудников для формы.

Я пытался поместить функцию wp_footer () в page.php, но функция не добавляет JS-скрипты для формы! Если я поместил wp_head () в page.php тоже — wp_footer () работает нормально.

Любые идеи, пожалуйста.

3

Решение

Если вы посмотрите на строка 200 из wp-includes / default-filters.php, вы заметите, что сценарии поставлены в очередь wp_head,

Вот почему ваши сценарии не работают. wp_head() является критической функцией для правильной работы контактной формы 7. Вы должны все еще включать wp_head(), но не нужно включать wp_header() для того, чтобы это произошло. Например, следующее должно держать вещи «голыми», но все же разрешать загрузку скриптов:

if ( !isset($_GET['naked']) ) {
get_header(); // if parameter exist do not load header
} else {
wp_head(); // still include wp_head(), but without the rest of the "header"}

Удостоверься что wp_head() все еще выполняется в вашем документе <head></head> раздел.

2

Другие решения

Других решений пока нет …