Может ли загрузчик сценариев / стилей WP использоваться для объединения и gzip-сценариев и стилей во внешнем интерфейсе?


27

В WP есть хороший загрузчик javascript, включенный в wp-admin: http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-scripts.php

и загрузчик CSS: http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-styles.php

Мне было интересно, можно ли использовать их и во внешнем интерфейсе, а не только в админе, потому что они могут объединять все сценарии, поставленные в очередь, и обслуживать их как один сжатый файл


Разве это не просто вопрос "Могу ли я использовать очереди для страниц без прав администратора?" .. Ответ на это будет Да.
t31os

5
@ t31os Вопрос в том, можете ли вы использовать load-scripts.php и load-styles для объединения и сжатия стилей и скриптов, как это сделано для администратора. Я уточнил название вопроса.
Chris_O

Ответы:


12

поздний ответ

Из краткого обзора:

Вы должны использовать

  • include( admin_url().'load-scripts.php' );
  • а также include( admin_url().'script-loader.php' );

Тогда прыгайте в $GLOBALS['wp_scripts']:

Использование ...

$wp_scripts->default_dirs( array_merge( 
     $wp_scripts->default_dirs
    ,array( '/themes/your_theme/js/' ) 
); 

... чтобы продлить его.

А потом использовать

$wp_scripts->add( $handle, $path_from_content_dir, false/array( $deps ), $ver ) 

добавить скрипт.

Заметки:

  1. Несжатые сценарии ищутся .dev.js(когда SCRIPT_DEBUGесть TRUE).
  2. То же самое возможно для $wp_styles.
  3. РЕДАКТИРОВАТЬ: WP 3.5 изменит это поведение и использовать .jsдля версий "dev" и ".min.js", когда ( SCRIPT_DEBUGесть TRUE);

(Но я думаю, это будет работать, только если вы используете плагин или mu-плагин.)

Это не проверено, и я не уверен, сработает ли это.


Я сейчас пытаюсь сделать что-то подобное. Плохо то, что load-scripts.php имеет exit()в конце, поэтому вы ничего не можете сделать потом.
Бенджамин Интал

Этот ответ на самом деле спас меня от сильной головной боли. Если SCRIPT_DEBUGэто так true, все сценарии ставятся в очередь индивидуально, как во внешнем интерфейсе. Однако, если SCRIPT_DEBUGесть false, кажется, что сценарии ставятся в очередь одновременно load-scripts.php.
Майкл Эклунд

@MichaelEcklund Да, этот «переключатель» - постоянный объединяет или доставляет отдельные файлы. Это из времен до исходных карт и в настоящее время инструментов разработчика.
Кайзер

6

Это очень хороший вопрос, и он будет отличной возможностью для WordPress.

Некоторые из других ответов не касаются основного вопроса.

Мне было интересно, можно ли использовать их и во внешнем интерфейсе, а не только в админе, потому что они могут объединять все сценарии, поставленные в очередь, и служить им в виде одного gzip-файла.

Нет, в настоящее время невозможно использовать встроенный загрузчик сценариев для объединения CSS и сценариев для внешнего интерфейса.

Об этом несколько лет назад шла дискуссия на WP Hackers, и есть пробная версия для этого усовершенствования , которое было принято, но в будущем выпуске.


3

Если вам нужно поставить CSS-файл в внешний интерфейс:

1) Зарегистрируйте стиль с помощью wp_register_style ($ handle, $ src). 2) Подключите wp_enqueue_style ($ handle) к хуку wp_print_styles.

Если вам нужно поставить скрипт в очередь на интерфейс:

1) Зарегистрируйте стиль с помощью wp_register_script ($ handle, $ src). 2) Подключите wp_enqueue_script ($ handle) к хуку wp_head.

(Примечание: я бы ожидал, что хук wp_print_styles для этого, но этот хук, очевидно, работает не так, как ожидалось.)


0

У меня есть несколько сценариев, которые вы можете посмотреть.

1. Combine.php - На ряде моих тем я реализовал этот скрипт . Он поддерживает аналогичную функциональность и может быть перенесен в папку с вашим шаблоном и работать с ним относительно легко

2. WP Minify - этот плагин поддерживает минификацию и с ним очень легко работать.

3. W3 Total Cache - очень мощный плагин производительности. Он также поддерживает комбинацию script / css, а также большое количество других функций, например, выгружает комбинированные скрипты в CDN.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.