wp_footer(); вызывается перед телом, но W3 Total Cache показывает ошибку

Я установил на свой сайт плагин W3 Total Cache, и в последнее время появилась эта ошибка:

Ваша активная тема:

· Имеет вызов, но не вызывается непосредственно перед закрывающим тегом тела

Это конец моего архива footer.php:

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXXXX-X']);
  _gaq.push(['_trackPageview']);
  (function() {var ga = document.createElement('script'); ga.type = 'text/javascript';      ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' :  'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')     [0]; s.parentNode.insertBefore(ga, s);})();
</script>

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

Как вы видете wp_footer(); непосредственно перед </body> тег. Я что-то пропустил?

Спасибо за помощь.

2 ответа

Ты не должен звонить <script> теги прямо в WordPress. Вместо этого используйте wp_enqueue_script():

google-analytics.js

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {var ga = document.createElement('script'); ga.type = 'text/javascript';      ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' :  'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')     [0]; s.parentNode.insertBefore(ga, s);})();

Тогда в вашей теме functions.php файл или файл плагина:

add_action( 'wp_enqueue_scripts', 'so20272587_add_analytics' );
function so20272587_add_analytics() {
    $handle = 'google-analytics';
    $src = 'path/to/google-analytics.js'; // where your JS file lives
    $deps = array(); // add any dependencies' handles in here
    $ver = false; // you can leave this false, or define your own version #
    $in_footer = true; // if you want to load it in the footer
    wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
}

Затем ваш скрипт Google Analytics будет загружен как часть нижнего колонтитула вашего сайта.

Я не хочу вмешиваться в ответ "кодовой лошадки", но все же:

wp_footer () - это функция, которая должна быть выше, кодекс Wordpress четко заявляет: "Поместите этот тег шаблона непосредственно перед тегом в шаблоне темы (например, footer.php, index.php)".

По моему скромному мнению, правильный код будет таким:

    <?php wp_footer(); ?>
    <script type="text/javascript">
        Here goes your Google analytics code
    </script>

    </body>
</html>

Итак, как вы видите. "wp_footer" выходит за пределы вашего кода Ganalytics, в этом случае ничего не испортится. Есть даже небольшие плагины WP специально для вставки аналитики Google, но это для ленивых, хе-хе

Другие вопросы по тегам