Intereting Posts
Функция Thickbox 'tb_unload' вызывается дважды Как добавить один тег к нескольким сообщениям? Отображение данных из базы данных без WordPress на шаблоне страницы Уведомление по электронной почте о новом сообщении включает код WP-CLI не может найти URL Удалить значение параметра из массива с помощью update_option () Таможенная таксономия как категории: Удалить вкладку «наиболее часто используемые»? Пользовательские / отдельные категории для пользовательских типов сообщений Как сохранить данные из отправленной формы из виджета Есть ли способ создать ссылку «копировать сообщение»? Безопасность и .htaccess Ошибка при установке ошибки подключения к базе данных во время первого запуска WordPress Внедрение общей таблицы содержимого на одностраничных страницах сообщений Заказ по рейтингу не работает в wp_query Разбиение страниц на 5 сообщений на страницу

Как использовать Head JS со всеми установленными сценариями?

Я хочу сначала загрузить head js, а затем все вложенные скрипты в его функцию. Вот так…

<script src=">/js/head.load.min.js" type="text/javascript" charset="UTF-8"></script> <script type="text/javascript"> head.js("/path/to/jquery.js", "/google/analytics.js", "/js/site.js", function() { // all done }); </script> 

Как мне это сделать?

Для тех, кто не знает, что HeadJS – это скрипт 2.30KB, который ускоряет, упрощает и модернизирует ваш сайт …

http://headjs.com/

Solutions Collecting From Web of "Как использовать Head JS со всеми установленными сценариями?"

Вам следует предупредить, что не все плагины / темы используют enqueue. Когда я впервые начал обрабатывать все созданные JavaScripts и файлы CSS, я просто подключился к файлам, помещенным в очередь. Это привело к тому, что я получил только 2 из 10 файлов JavaScript и 1 из 3 файлов CSS.

Вот несколько быстрых PoC. Не проверено, а предназначено, чтобы поставить вас в правильном направлении, если вы можете закодировать. Как только я вернусь домой, я соберу что-нибудь более подходящее и функциональное.

 add_action('wp_print_scripts','head_files'); function head_files(){ global $wp_scripts, $auto_compress_scripts; print 'print out head.js'; $queue = $wp_scripts->queue; $wp_scripts->all_deps($queue); $to_do = $wp_scripts->to_do; $headArray = array(); foreach ($to_do as $key => $handle) { $src = $wp_scripts->registered[$handle]->src; $headArray[] = $src; } print 'print out head.js("'.implode("'",$headArray.'")'; } 

(В основном проведите большую часть кода от JS & CSS Script Optimizer )

 add_filter('wpsupercache_buffer', 'head_files' ); function head_files($buffer){ if ( $fileType == "js" ){ preg_match_all('~<script.*(type="["\']text/javascript["\'].*)?src=["\'](.*)["\'].*(type=["\']text/javascript["\'].*)?></script>~iU',$content,$matches); $headArray = $matches[2]; } print 'print out head.js'; print 'print out head.js("'.implode("'",$headArray.'")'; return $buffer; } 

Использование буферизации вывода Super Cache WP.

Вот что я пытаюсь сделать для интеграции head.js:

Я помещаю этот код в свой файл functions.php шаблона

 define('THEME', get_bloginfo('template_url'), true); define('THEME_JS', THEME . '/js/', true); add_action('wp_print_scripts','head_js_files'); function head_js_files() { if (is_admin()) return; //to preserve the admin global $wp_scripts; $in_queue = $wp_scripts->queue; if(!empty($in_queue)) { $scripts = array(); foreach($in_queue as $script) { $src = $wp_scripts->registered[$script]->src; $src = ( (preg_match('/^(http|https)\:\/\//', $src)) ? '' : get_bloginfo('url') ) . $src; $scripts[] = '{' . $script . ':"' . $src . '"}'; } echo "<script type=\"text/javascript\" src=\"".THEME_JS."head.js\"></script>\n"; echo "<script type=\"text/javascript\">head.js(\n". implode(",\n", $scripts). "\n);</script>\n"; } $wp_scripts->queue = array(); } 

Он выводит что-то вроде этого:

 <script type="text/javascript">head.js( {jquery:"/wp-includes/js/jquery/jquery.js"}, {jquery_lastfm:"http://localhost/lucianomammino/wp-content/plugins/lastfm-recent-tracks-widget/js/jquery.lastfm.js"}, {nav:"http://localhost/lucianomammino/wp-content/themes/lmtheme/js/jquery.dropdown.js"} );</script> 

Обратите внимание, что он также использует метку сценария, которая иногда может быть полезна для определения того, какие (и когда) сценарии загружаются.

Вы также можете попробовать этот плагин (или, по крайней мере, посмотреть на код в нем):

http://wordpress.org/extend/plugins/headjs-loader/

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

Вот мое решение для этого. Я использую yepnope вместо head.js, но теория почти такая же.

https://wordpress.stackexchange.com/a/40325/9802

Я надеюсь, что это поможет, и дайте мне знать, если у вас есть комментарии к этой теме.