È possibile utilizzare il caricatore di script / stili WP per concatenare e gzip script e stili nel front-end?


27

WP ha un bel caricatore javascript incluso in wp-admin: http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-scripts.php

e un caricatore CSS: http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-styles.php

Mi chiedevo se fosse possibile usarli anche nel front-end, non solo nell'amministratore, perché possono concatenare tutti gli script accodati e servirli come un singolo file gzip


Questo non è efficacemente solo chiedendo "Posso usare accampamenti per pagine non amministrative?" .. La risposta sarebbe Sì.
t31os,

5
@ t31os La domanda è se è possibile utilizzare load-scripts.php e load-styles per concatenare e decomprimere gli stili e gli script come se fossero fatti per l'amministratore. Ho chiarito il titolo della domanda.
Chris_O

Risposte:


12

risposta in ritardo

Da un breve sguardo:

Dovresti usare

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

Quindi saltare in $GLOBALS['wp_scripts']:

Uso…

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

... per estenderlo.

E poi usa

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

per aggiungere uno script.

Gli appunti:

  1. Gli script non compressi vengono cercati da .dev.js(quando lo SCRIPT_DEBUGè TRUE).
  2. Lo stesso sembra essere possibile per $wp_styles.
  3. EDIT: WP 3.5 cambierà questo comportamento e lo utilizzerà .jsper le versioni "dev" e ".min.js" quando ( SCRIPT_DEBUGè TRUE);

(Ma suppongo che funzionerà solo se usi un plugin o mu-plugin.)

Non è testato e non sono sicuro che funzioni.


Attualmente sto provando a fare qualcosa del genere. La cosa brutta è che load-scripts.php ha un exit()alla fine, quindi non puoi fare nulla in seguito.
Benjamin Intal,

Questa risposta in realtà mi ha salvato da un forte mal di testa. Se lo SCRIPT_DEBUGè true, tutti gli script sono accodati singolarmente come nel frontend. Tuttavia, se lo SCRIPT_DEBUGè false, sembra accodare contemporaneamente gli script load-scripts.php.
Michael Ecklund,

@MichaelEcklund Sì, questo "switch" - costante concatena o consegna singoli file. Questo è dai tempi precedenti mappe di origine e oggi strumenti di sviluppo.
Kaiser

6

Questa è un'ottima domanda e sarebbe un'ottima funzionalità per WordPress da includere.

Alcune delle altre risposte non rispondono alla domanda principale.

Mi chiedevo se fosse possibile usarli anche nel front-end, non solo nell'amministratore, perché possono concatenare tutti gli script accodati e servirli come un singolo file compresso con gzip.

No, al momento non è possibile utilizzare il caricatore di script integrato per concatenare CSS e script per il front-end.

C'è stata una discussione al riguardo su WP Hackers qualche anno fa e c'è un ticket trac per questo miglioramento che è stato accettato ma per una versione futura.


3

Se devi accodare un file CSS sul front-end:

1) Registrare lo stile tramite wp_register_style ($ handle, $ src) 2) Agganciare wp_enqueue_style ($ handle) nel gancio wp_print_styles.

Se devi accodare uno script sul front-end:

1) Registrare lo stile tramite wp_register_script ($ handle, $ src) 2) Agganciare wp_enqueue_script ($ handle) nel gancio wp_head.

(Nota: mi sarei aspettato l'hook wp_print_styles per questo, ma apparentemente questo hook non funziona come previsto.)


0

Ho alcuni script che potresti voler guardare.

1. Combine.php - Su alcuni dei miei temi ho implementato questo script . Supporta funzionalità simili e può essere rilasciato nella cartella dei modelli e lavorato relativamente facilmente.

2. WP Minify : questo plug-in supporta la minimizzazione ed è molto semplice da utilizzare.

3. W3 Total Cache : è un plug-in di prestazioni molto potente. Supporta anche la combinazione script / css e un gran numero di altre funzionalità, ad esempio il caricamento degli script combinati su una rete CDN.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.