Содержание
Приветствую всех! На днях, при проверке своих сайтов на 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 хука, использую которые мы с легкостью можем удалить эти «шероховатости».
Читайте также:
- Добавляем атрибуты Defer & Async для скриптов WordPress
- Как установить Яндекс метрику на сайт WordPress
- Как отключить обновление WordPress, плагинов и тем. 100% методы
Хуки
- 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 был без ошибок и любых предупреждений.
С уважением, с вами был Дмитрий!