Приветствую всех! На днях, при проверке своих сайтов на WordPress столкнулся с предупреждениями в валидаторе кода — w3c. Пишет мол, что объявлять атрибут type
для скриптов и стилей сейчас вовсе не нужно.
<style type="text/css"></style> <script type="text/javascript"></script>
После некоторых исследований и поиска информации в вебе, обнаружил, что и в правду в HTML 5 больше не требуется указывать эти атрибуты.
Как быть с WP?
В просто верстке html это легко подредактировать и исправить. Но, а как быть с WordPress? Ведь у него файлы подключаются при помощи функций wp_enqueue_script
и wp_enqueue_style
и на автомате проставляются эти атрибуты.
Но, как всегда, разработчики WordPress и это учли, и создали 2 хука, использую которые мы с легкостью можем удалить эти «шероховатости».
Хуки
- style_loader_tag — для стилей
- script_loader_tag — для скриптов
Функции
Ниже, я написал функцию, которая удаляет все атрибуты type
из подключаемых файлов JS и Style в WordPress.
Приведенный ниже код помещаем в файл functions.php
add_filter('style_loader_tag', 'cmswp_remove_type_attr', 10, 2); add_filter('script_loader_tag', 'cmswp_remove_type_attr', 10, 2); function cmswp_remove_type_attr($tag, $handle) { return preg_replace( "/type=['\"]text\/(javascript|css)['\"]/", '', $tag ); }
Функция ниже, убирает атрибуты по всему сайту, даже в контенте статьи.
add_action( 'template_redirect', function(){ ob_start( function( $buffer ){ $buffer = str_replace( array( 'type="text/javascript"', "type='text/javascript'" ), '', $buffer ); $buffer = str_replace( array( 'type="text/css"', "type='text/css'" ), '', $buffer ); return $buffer; }); });
Одно, но
Теперь, по сути, проблема решена, но скорее всего, не у всех файлов плагинов и тем, которые установлены и активированы в админке будут убираться эти атрибуты.
Почему? Потому что некоторые шаблоны и плагины подключают свои файлы как-то иначе, может быть и просто вставкой кода непосредственно в html или какими-то своими функциями, на которые код выше срабатывать не будет.
Пишите в комментариях, если остались какие-либо вопросы!
P.S.
Имейте в виду, что подобные предупреждения не являются какими-то ошибками, поэтому вы можете объяснить это и своим заказчикам. В любом случае, когда нибудь будет и такой клиент, который захочет, чтобы тест валидатора w3c был без ошибок и любых предупреждений.