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, но это для ленивых, хе-хе