Czy można użyć modułu ładującego skrypty / style WP do łączenia skryptów i stylów gzip w interfejsie użytkownika?


27

WP ma ładny moduł ładujący javascript zawarty w wp-admin: http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-scripts.php

oraz moduł ładujący CSS: http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-styles.php

Zastanawiałem się, czy można ich użyć również w interfejsie, nie tylko w administracji, ponieważ mogą one łączyć wszystkie kolejkowane skrypty i obsługiwać je jako pojedynczy plik spakowany gzipem


Czy nie jest to skuteczne pytanie „czy mogę używać kolejki dla stron nieadministracyjnych?” .. Odpowiedź brzmi: tak.
t31os

5
@ t31os Pytanie brzmi, czy można użyć load-scripts.php i load-styles do łączenia i gzipowania stylów i skryptów, tak jak zostały wykonane dla administratora. Wyjaśniłem tytuł pytania.
Chris_O,

Odpowiedzi:


12

spóźniona odpowiedź

Od krótkiego spojrzenia:

Musisz użyć

  • include( admin_url().'load-scripts.php' );
  • i include( admin_url().'script-loader.php' );

Następnie wskocz do $GLOBALS['wp_scripts']:

Posługiwać się…

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

… Aby go przedłużyć.

A potem użyj

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

aby dodać skrypt.

Uwagi:

  1. Nieskompresowane skrypty są wyszukiwane według .dev.js(kiedy SCRIPT_DEBUGjest TRUE).
  2. Wydaje się, że to samo jest możliwe $wp_styles.
  3. EDYCJA: WP 3.5 zmieni to zachowanie i zastosuje .jsdla wersji „dev” i „.min.js”, gdy ( SCRIPT_DEBUGjest TRUE);

(Ale myślę, że to zadziała tylko wtedy, gdy użyjesz wtyczki lub wtyczki mu).

Nie został przetestowany i nie jestem pewien, czy to zadziała.


Obecnie próbuję zrobić coś takiego. Złą rzeczą jest to, że load-scripts.php ma exit()na końcu więc nie możesz nic zrobić później.
Benjamin Intal

Ta odpowiedź naprawdę uratowała mnie przed ogromnym bólem głowy. Jeśli SCRIPT_DEBUGtak true, wszystkie skrypty są kolejkowane indywidualnie, podobnie jak w interfejsie użytkownika. Jeśli SCRIPT_DEBUGtak false, wydaje się, że kolejkuje skrypty jednocześnie load-scripts.php.
Michael Ecklund

@MichaelEcklund Tak, ten „przełącznik” - ciągły konkatenuje lub dostarcza pojedyncze pliki. To pochodzi z czasów, gdy mapy źródłowe były obecne, a obecnie narzędzia programistyczne.
kaiser

6

To bardzo dobre pytanie i byłoby świetną funkcją dla WordPressa.

Niektóre inne odpowiedzi nie odnoszą się do głównego pytania.

Zastanawiałem się, czy można ich używać również w interfejsie, nie tylko w administracji, ponieważ mogą one łączyć wszystkie kolejkowane skrypty i obsługiwać je jako pojedynczy plik spakowany gzipem.

Nie, obecnie nie można używać wbudowanego modułu ładującego skrypty do łączenia css i skryptów dla interfejsu użytkownika.

Kilka lat temu odbyła się dyskusja na ten temat na WP Hackers i istnieje zapis trac dla tego ulepszenia, które zostało zaakceptowane, ale w przyszłej wersji.


3

Jeśli potrzebujesz kolejkować plik CSS na interfejsie:

1) Zarejestruj styl za pomocą wp_register_style ($ uchwyt, $ src) 2) Zaczep wp_enqueue_style ($ uchwyt) do haka wp_print_styles.

Jeśli potrzebujesz kolejkować skrypt na interfejsie:

1) Zarejestruj styl za pomocą wp_register_script ($ uchwyt, $ src) 2) Zaczep wp_enqueue_script ($ uchwyt) w haku wp_head.

(Uwaga: oczekiwałbym za to haka wp_print_styles, ale ten haczyk najwyraźniej nie działa zgodnie z oczekiwaniami).


0

Mam kilka skryptów, które możesz chcieć obejrzeć.

1. Combine.php - W wielu moich motywach zaimplementowałem ten skrypt . Obsługuje podobną funkcjonalność i można go upuścić do folderu szablonów i stosunkowo łatwo z nim pracować.

2. WP Minify - Ta wtyczka obsługuje minimalizowanie i jest bardzo łatwa w obsłudze.

3. W3 Total Cache - to bardzo wydajna wtyczka wydajnościowa. Obsługuje również kombinację skryptu / css, a także wiele innych funkcji, np. Wyłącza ładowanie połączonych skryptów do CDN.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.