Intereting Posts
Как опубликовать некоторые страницы по умолчанию в многопользовательском создании? Обнаружение текущей страницы из метода класса Правильный поиск и замена запросов для изменения URL-адресов в базе данных WordPress? Как я могу изменить этот код footer.php, чтобы вызвать случайное изображение при перезагрузке? Как обернуть каждое изображение в сообщении с помощью div? запрос в category.php повторяет сам изображение, загруженное не может быть показано Несколько экземпляров короткого кода на одной странице Пример запроса сообщений, отображающих последнее сообщение с помощью избранного изображения Ссылка на файлы в JavaScript в плагине WordPress Как добавить поддержку oEmbed в мою тему? wp_mail работает с add_action ('save_post', …), но не является ajax-действием Как установить статус по умолчанию для настраиваемого типа сообщения Содержимое страницы шаблона Удалить rel = "приложение wp-att-XX"

Modernizr и WordPress – Как добавить класс CSS в элемент html?

Инструкции для реализации Modernizr утверждают, что я должен добавить class="no-js" в элемент <html> .

Есть ли способ сделать это в WordPress, используя крючок или фильтр? Если это вообще возможно, я бы предпочел сделать это без редактирования файлов темы.

Solutions Collecting From Web of "Modernizr и WordPress – Как добавить класс CSS в элемент html?"

Это не совсем ответ, но вы можете использовать hook для фильтра language_attributes . Это действие запускается с <html> и то, что он делает, просто эхо-строка lang=en , например. Вы можете подключиться к этому и заменить строку своим классом CSS следующим образом:

 add_filter('language_attributes', 'modernizr'); function modernizr($output) { return $output . ' class="no-js"'; } 

Это работает только тогда, когда ваша тема соответствует Контрольному списку разработки WordPress . Иногда люди не следуют этому, и это нарушает технику.

Немного поздно в игре здесь, но просто чтобы добавить к ответу @Rilwis, вы можете добавить скрипт к функции, которая проверяет, добавлены ли атрибуты языка no-js или нет.

Хотя я не использую Modernizr, я использую сценарий обнаружения no-js с двадцать шестнадцатого, поэтому включение в него почти одинаково. Выполняя это так, вам не нужно беспокоиться об удалении функции, добавленной в wp_head или wp_enqueue_scripts поскольку это происходит автоматически при удалении фильтра.

Добавление метода удаления фильтра

 /** * Javascript Detection Filter * * remove_filter( 'language_attributes', 'lang_atts_js_detect' ); */ add_filter( 'language_attributes', 'lang_atts_js_detect' ); function lang_atts_js_detect($output) { return $output . ' class="no-js"'; } add_action( 'wp_head', function() { if ( has_filter( 'language_attributes', 'lang_atts_js_detect' ) ) { echo "<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>\n"; } }, 0); 

Подход к теме поддержки

Другой вариант – сделать это с помощью current_theme_supports .

 /** * Javascript Detection Theme Support * * add_theme_support( 'js-detect' ); */ add_action( 'init', function() { if ( current_theme_supports( 'js-detect' ) && !is_admin() ) add_filter( 'language_attributes', 'lang_atts_js_detect_class' ); add_action( 'wp_head', 'lang_atts_js_detect_script', 0 ); } function lang_atts_js_detect_class($output) { return $output . ' class="no-js"'; } function lang_atts_js_detect_script() { echo "<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>\n"; }