WordPress: добавление тега <noscript> заставляет тег <head> автоматически закрывать
Добрый день всем. Я использую генератор "amp" на сайте WordPress, одно из действий этого плагина заключается в добавлении тега biolerplate непосредственно перед </head>
и <noscript>
тег с запасным вариантом. Поисковая консоль Google постоянно предупреждает меня об определенной ошибке:
"Обязательный тег" Корпус noscript для шаблона "отсутствует или неверен".
Итак, я начинаю расследовать. Я обнаружил, что "что-то" вводит </head><body>
как раз перед <noscript>
открывающий тег, если я поменяю место, куда я положил тег noscript, остальные два тоже будут перемещены.
этот код отображается:
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style>
</head><body><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
Я сделал много тестов и кажется, что <noscript>
тег является точкой этой ошибки. Я читал также некоторые другие ответы, в которых говорится, что документ не должен быть строгим xhtml 1.1, что не так, потому что это первые вещи, представленные на странице:
<!DOCTYPE html>
<html amp lang="it-IT"><head><meta charset="utf-8"><link rel="dns-prefetch" href="https://cdn.ampproject.org">
Я пытаюсь выяснить, что я могу сделать, чтобы решить эту ошибку, которая присутствует на многих сайтах, с различными плагинами и темами (а также версиями WordPress).
ОБНОВЛЕНИЕ: я пытался добавить вручную <noscript>
тег в коде, и каждый раз, когда я добавляю его в <head>
раздел, раздел закрывается, а <body>
раздел открыт без какого-либо класса (так что это похоже на ошибку). если вы хотите увидеть ошибку, просто зайдите сюда и найдите код:
https://www.assistenzamalasanita.com/2015/07/errori-medici-durante-il-parto-come-si-valutano/amp/
ОБНОВЛЕНИЕ 2 Отключение ВСЕХ плагинов и переключение на тему по умолчанию не влияет на это. Кроме того, я скопировал весь сайт как есть на другом сервере, на котором проблемы нет, сайты WP идентичны, а также конфигурации serer должны быть, НО на работающем сайте я вижу, что запрос HTTP имеет атрибут о версии php (7.0.2), которого нет на другом сайте.
Возможно ли, что это может повлиять на визуализацию страницы? чтобы увидеть сайт, который работает: https://www.doors.it/iride/2017/10/risarcimento-malasanita/amp
ОБНОВЛЕНИЕ 3 это часть плагина, которая на самом деле пишет код шаблона (который имеет ошибочные метки головы и тела).
add_action( 'amp_post_template_head', 'amp_post_template_add_boilerplate_css' );
function amp_post_template_add_boilerplate_css( $amp_template ) {
?>
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
<?php
}
Как вы можете заметить, весь блок вставляется за один снимок, за ним нет логики, и страница должна отображаться как есть (в этом коде я попытался изменить теги на <nonscript>
и все было в порядке, теги заголовка не были закрыты, а тег body был открыт в нужном месте с правильными классами.
1 ответ
Как отмечается в комментариях и в третьем редактировании, это вызвано подключенной функцией. К счастью, это довольно просто!
Как @ sally-cj, упомянутый в комментариях, используйте remove_action( 'amp_post_template_head', 'amp_post_template_add_boilerplate_css' );
чтобы остановить эту функцию от стрельбы в целом.
Если мы не хотим вводить стили в админку, вы можете просто продублировать фильтр в коде вашей темы без </noscript>
тег.
add_action( 'amp_post_template_head', 'so_52185596_custom_boilerplate_css' );
function so_52185596_custom_boilerplate_css( $amp_template ) {
?>
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style>
<?php
}