Intereting Posts
Добавление rel = next и prev к <head> для разбитых по страницам комментариев Функция Paginate Links: Страница 1 не работает Инструменты для преобразования существующего дизайна веб-сайта в шаблон WordPress? Проблемы с загрузкой медиафайлов в модуле редактирования страниц? Расширить страницу настроек плагина Как удалить возможности липкой записи для определенной роли пользователя? вызывать функцию при вставке и обновлении настраиваемого типа сообщения Динамическое присвоение настраиваемого шаблона настраиваемым сообщениям типа post Где я могу хранить общий межсайтовый текст (например, заголовки, заголовки и т. Д.) paginate_links () всегда выводит, как если бы posts_per_page были 10 Как я могу настроить это меню? Как я могу динамически извлекать имя таксономии пользовательского назначения из текущего сообщения? Создать новую категорию при сохранении на основе информации о сообщении Изменение типа возможностей без изменения плагина Сообщение на сервер, записанный в Hapijs из wordpress, используя wp_remote_post

wp_enqueue_script добавление условного оператора не работает

Это код im, который используется в моем файле функций:

add_action('init', 'sort_out_jquery_pngfix_frontend'); function sort_out_jquery_pngfix_frontend() { global $wp_scripts; if(!is_admin()) { wp_deregister_script('jquery'); wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', array(), NULL, true); wp_register_script('dd_belatedpng', get_stylesheet_directory_uri() . '/js/dd_belatedpng.js', array(), NULL, true); $wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7'); } } add_action('wp_print_scripts', 'register_theme_scripts'); function register_theme_scripts() { if(!is_admin()) { wp_enqueue_script('modernizr', get_stylesheet_directory_uri() . '/js/modernizr-1.7.min.js', array(), NULL, false); wp_enqueue_script('googlemaps', 'http://maps.google.com/maps/api/js?sensor=false', array(), NULL, true); wp_enqueue_script('jquery'); wp_enqueue_script('dd_belatedpng'); wp_enqueue_script('sc_wc_js', get_stylesheet_directory_uri() . '/js/function.js', array('jquery', 'dd_belatedpng'), '1.0', true); } } 

Я использую $wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7'); чтобы добавить условный оператор к этому скрипту в соответствии с документацией, которую я могу найти в режиме онлайн, но не работает. Условный код не отображается, но файл js.

Почему это не работает?

Из быстрого просмотра кода это условное выражение, похоже, обрабатывается только для стилей, а не для скриптов.

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

 // Register the script wp_register_script( 'dd_belatedpng', get_stylesheet_directory_uri() . '/js/dd_belatedpng.js', array(), NULL, true ); // Attempt to add in the IE conditional tags $wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7'); // Enqueue the script wp_enqueue_script( 'dd_belatedpng' ); 

Я не знаю, что это сработает, хотя

РЕДАКТИРОВАТЬ

Основываясь на соответствующем билете Trac, кажется, что $wp_scripts не поддерживает этот метод.

Вам просто нужно вытащить скрипт из системы wp_enqueue_script() и повторить вызов сценария с условным заключением IE внутри подключаемой функции, подключенной к wp_print_scripts или wp_head . Это, конечно, не идеально, но если это одноразовая клиентская тема, вам не нужно беспокоиться о том, что кто-то еще нуждается в отмене регистрации сценария.

Это работа, которую я должен был создать, поскольку WP не поддерживает то, что я пытался сделать

functions.php

 add_action('init', 'sort_out_jquery_pngfix_frontend'); function sort_out_jquery_pngfix_frontend() { if(!is_admin()) { wp_deregister_script('jquery'); wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', array(), NULL, true); wp_register_script('dd_belatedpng', get_stylesheet_directory_uri() . '/js/dd_belatedpng.js', array(), NULL, true); } } add_action('wp_print_scripts', 'register_theme_scripts'); function register_theme_scripts() { if(!is_admin()) { wp_enqueue_script('modernizr', get_stylesheet_directory_uri() . '/js/modernizr-1.7.min.js', array(), NULL, false); wp_enqueue_script('googlemaps', 'http://maps.google.com/maps/api/js?sensor=false', array(), NULL, true); wp_enqueue_script('jquery'); wp_enqueue_script('sc_wc_js', get_stylesheet_directory_uri() . '/js/function.js', array('jquery'), '1.0', true); } } 

footer.php

 <?php wp_footer(); ?> <!--[if lt IE 7]> <?php wp_print_scripts(array('dd_belatedpng')); ?> <script>DD_belatedPNG.fix("img, .png_bg");</script> <![endif]--> 

Просто нашел частичное решение для этого через $is_IE в wp-includes / vars.php!

 function emporium_enqueue_scripts() { global $is_IE; if( $is_IE ) { wp_register_script( 'emporium-focus' , get_template_directory_uri() . '/library/focus.js', '', '', true ); wp_enqueue_script( 'emporium-focus' ); } } add_action('init', 'emporium_enqueue_scripts'); 

Это похоже на загрузку библиотеки / focus.js на основе if IE но в ядре нет ничего, чтобы выполнять любые условные обозначения IE для скриптов. Похоже, что билет Trac по этому предмету временно отложен.

Похоже, вы кладете его в нижний колонтитул. Вы посмотрели на конец страницы для JS-файла?

Это работает и для скриптов. Но только в одной ситуации: если скрипт был registered первым. Вы не можете пойти прямо в enqueue . Вам нужно будет: register -> add_data -> enqueue . Это как для скриптов, так и для стилей того же правила.

Вы должны добавить версию скрипта в свой код …

Подробнее здесь http://codex.wordpress.org/Function_Reference/wp_enqueue_script

Вот рабочий пример для WordPress 4.2 и выше.

Этот первый пример был ранее рассмотрен здесь .

  wp_enqueue_script("ie_jshandle", get_template_directory_uri() . "/js/jsSpecificIE.js", array(), '1.0', false ); wp_enqueue_script("ie_jshandle"); wp_script_add_data("ie_jshandle", "conditional", "lt IE 9"); 

Вы также можете использовать переменную $wp_scripts следующим образом:

 function wpse_20873_enq_scripts() { global $wp_scripts; wp_enqueue_script("ie_jshandle", get_template_directory_uri() . "/js/jsSpecificIE.js", array(), '1.0', false ); wp_enqueue_script("ie_jshandle"); $wp_scripts->add_data("ie_jshandle", "conditional", "lt IE 9"); } add_action("wp_enqueue_scripts", "wpse_20873_enq_scripts"); 

Ссылка wp_script_add_data