Intereting Posts
Нужна помощь в скрипте разбивки на WordPress wp_enqueue_script не загружает скрипты вообще Запрос на должности в 2 таксономиях Удаление родительской темы CSS без редактирования родительской темы От многих до многих отношений между двумя настраиваемыми типами сообщений Пользовательская ошибка загрузки сообщения типа сообщения с пользовательской ролью пользователя Woocommerce – средний рейтинг-виджет wp E-commerce предлагает плагин продукта с опцией muliple? Ломающаяся сетка бутстрапа при количестве сообщений с налоговыми условиями Переписать пользовательский тип почтового сообщения – несколько типов сообщений Функции bp_core не работают в API-интерфейсе buddypress json фильтровать значения настраиваемого поля $ min $ max Как отображать все сообщения от стандартных сообщений до пользовательских типов сообщений в цикле с разбивкой на страницы? Автоматические обновления не работают / плагины не устанавливаются Страница с шаблоном страницы, не использующим шаблон в Preview

Поддерживает ли wordpress wp_enqueue_style noscript?

Я хочу добавить таблицу стилей, завернутую в тег noscript для пользовательской темы. У wp_enqueue_style есть поддержка? Или я должен просто включить его, как обычно в html?

Solutions Collecting From Web of "Поддерживает ли wordpress wp_enqueue_style noscript?"

Нет, нет. Если вам нужно использовать NOSCRIPT , вам нужно добавить его непосредственно в тему header.php или использовать действие wp_head чтобы добавить его из кода.

Zorro Here Наткнулся на этот вопрос сегодня, когда я искал, чтобы решить ту же проблему для выставленных сценариев. Я предполагаю, что вы действительно хотите использовать noscript после скриптов, а не после стилей, правильно

Если да, я разделяю то, как я решил, потому что это может помочь вам.

Использование noscript со скриптами

К сожалению, до сих пор WordPress не имеет собственного специфического способа добавления элементов noscript в любой Javascript, помещенный в собственные функции wp_register_script / wp_enqueue_scriptw

Хорошей новостью является то, что вы можете решить это, используя фильтр WordPress. В частности, используя script_loader_tag, как вы можете видеть в приведенном ниже примере.

 /** * @summary filters an enqueued script tag and adds a noscript element after it * * @description filters an enqueued script tag (identified by the $handle variable) and * adds a noscript element after it. If there is also an inline script enqueued * after $handled, adds the noscript element after it. * * @access public * @param string $tag The tag string sent by `script_loader_tag` filter on WP_Scripts::do_item * @param string $handle The script handle as sent by `script_loader_tag` filter on WP_Scripts::do_item * @param string $src The script src as sent by `script_loader_tag` filter on WP_Scripts::do_item * @return string $tag The filter $tag variable with the noscript element */ function add_noscript_filter($tag, $handle, $src){ // as this filter will run for every enqueued script // we need to check if the handle is equals the script // we want to filter. If yes, than adds the noscript element if ( 'script-handle' === $handle ){ $noscript = '<noscript>'; // you could get the inner content from other function $noscript .= '<p>this site demands javascript</p>'; $noscript .= '</noscript>'; $tag = $tag . $noscript; } return $tag; } // adds the add_noscript_filter function to the script_loader_tag filters // it must use 3 as the last parameter to make $tag, $handle, $src available // to the filter function add_filter('script_loader_tag', 'add_noscript_filter', 10, 3); 

В принципе, вы должны добавить свой элемент noscript к связанному сценарию с помощью add_noscript_filter , который дает вам окончательную строку script с исходным скриптом, добавленным с помощью wp_enqueue_script и любым встроенным скриптом, добавленным wp_add_inline_script .

Использование noscript со стилями

Если вам действительно нужно использовать его со стилями, есть фильтр style_loader_tag который работает аналогичным образом

Вы бы использовали его так:

 /** * @summary filters an enqueued style tag and adds a noscript element after it * * @description filters an enqueued style tag (identified by the $handle variable) and * adds a noscript element after it. * * @access public * @param string $tag The tag string sent by `style_loader_tag` filter on WP_Styles::do_item * @param string $handle The script handle as sent by `script_loader_tag` filter on WP_Styles::do_item * @param string $href The style tag href parameter as sent by `script_loader_tag` filter on WP_Styles::do_item * @param string $media The style tag media parameter as sent by `script_loader_tag` filter on WP_Styles::do_item * @return string $tag The filter $tag variable with the noscript element */ function add_noscript_style_filter($tag, $handle, $href, $media){ // as this filter will run for every enqueued script // we need to check if the handle is equals the script // we want to filter. If yes, than adds the noscript element if ( 'script-handle' === $handle ){ $noscript = '<noscript>'; // you could get the inner content from other function $noscript .= '<p>this site demands javascript</p>'; $noscript .= '</noscript>'; $tag = $tag . $noscript; } return $tag; } // adds the add_noscript_filter function to the style_loader_tag filters // it must use 4 as the last parameter to make $tag, $handle, $href, $media available // to the filter function add_filter('style_loader_tag', 'add_noscript_style_filter', 10, 4); 

Рекомендации:

  • script_loader_tag на WP Trac .
  • style_loader_tag на WP Trac .

Другие ответы дают ответы на ваш вопрос по запросу, но они упускают из виду гораздо более общий подход к изменению стилей на основе того, поддерживает ли клиент JavaScript.

Сначала: в файле header.php добавьте класс no-js в элемент root (html). Это может выглядеть примерно так:

 <html class="no-js" <?php language_attributes(); ?>> 

Далее: добавьте скрипт, который заменяет класс no-js классом js . Это также можно обрабатывать непосредственно в header.php но я предпочитаю прикреплять его к раннему приоритету действия wp_head . Вот пример из текущей темы по умолчанию, двадцать один раз:

 function twentyseventeen_javascript_detection() { echo "<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>\n"; } add_action( 'wp_head', 'twentyseventeen_javascript_detection', 0 ); 

Наконец: решите, как вы хотите применить свои стили. Он будет варьироваться в зависимости от конкретного случая. Вы также можете:

Применяйте свои стили, предполагая, что JavaScript недоступен с переопределениями для случаев, когда это:

 .my-element { display: block; } .js .my-element { display: none; } 

Или примените стили, предполагая, что JavaScript будет доступен с переопределениями для случаев, когда это не так:

 .my-element { display: none; } .no-js .my-element { display: block; }