O carregador de scripts / estilos do WP poderia ser usado para concatenar e compactar scripts e estilos no front-end?

27

O WP possui um bom carregador javascript incluído no wp-admin: http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-scripts.php

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

Eu queria saber se é possível usá-los também no front-end, não apenas no admin, porque eles podem concatenar todos os scripts enfileirados e servi-los como um único arquivo compactado

Alex
fonte
Isso não está efetivamente apenas perguntando "Posso usar enfileiramentos para páginas que não são de administração?" .. A resposta para isso seria sim.
t31os 23/02
5
@ t31os A questão é se você pode usar o load-scripts.php e o load-styles para concatenar e compactar com gzip os estilos e scripts como eles são feitos para o administrador. Esclarei o título da pergunta.
31511 Chris_O

Respostas:

12

Resposta atrasada

De uma breve olhada:

Você teria que usar

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

Então pule para $GLOBALS['wp_scripts']:

Usar…

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

... para estendê-lo.

E então use

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

para adicionar um script.

Notas:

  1. Os scripts não compactados são pesquisados ​​por .dev.js(quando SCRIPT_DEBUGestá TRUE).
  2. O mesmo parece ser possível para $wp_styles.
  3. EDIT: O WP 3.5 mudará esse comportamento e será usado .jsnas versões "dev" e ".min.js" quando ( SCRIPT_DEBUGfor TRUE);

(Mas acho que isso só funcionará se você usar um plugin ou mu-plugin.)

Não está testado e não tenho certeza se isso vai funcionar.

kaiser
fonte
Atualmente, estou tentando fazer algo assim. O ruim é que o load-scripts.php tem um exit()no final, então você não pode fazer nada depois.
Benjamin Intal
Essa resposta realmente me salvou de uma enorme dor de cabeça. Se SCRIPT_DEBUGfor true, todos os scripts são enfileirados individualmente, como no frontend. No entanto, se SCRIPT_DEBUGfor false, parece enfileirar os scripts simultaneamente load-scripts.php.
precisa saber é o seguinte
@MichaelEcklund Sim, essa constante "alternar" concatena ou entrega arquivos únicos. Isso ocorre desde os mapas de origem e hoje em dia nas ferramentas do desenvolvedor.
Kaiser
6

Essa é uma pergunta muito boa e seria um ótimo recurso para o WordPress incluir.

Algumas das outras respostas não abordam a questão principal.

Eu queria saber se é possível usá-los também no front-end, não apenas no admin, porque eles podem concatenar todos os scripts enfileirados e servi-los como um único arquivo compactado com o gzip.

Não, atualmente não é possível usar o carregador de scripts embutido para concatenar css e scripts para o front end.

Houve uma discussão sobre isso no WP Hackers há alguns anos e existe um ticket trac para esse aprimoramento que foi aceito, mas para uma versão futura.

Chris_O
fonte
3

Se você precisar enfileirar um arquivo CSS no front end:

1) Registre o estilo via wp_register_style ($ handle, $ src) 2) Conecte wp_enqueue_style ($ handle) no gancho wp_print_styles.

Se você precisar enfileirar um script no front end:

1) Registre o estilo via wp_register_script ($ handle, $ src) 2) Conecte wp_enqueue_script ($ handle) no gancho wp_head.

(Nota: eu esperava o gancho wp_print_styles para isso, mas esse gancho aparentemente não funciona conforme o esperado.)

Chip Bennett
fonte
0

Eu tenho alguns scripts que você pode querer examinar.

1. Combine.php - Em vários dos meus temas, eu implementei esse script . Ele suporta funcionalidades semelhantes e pode ser colocado na sua pasta de modelos e trabalhado com relativa facilidade.

2. WP Minify - Este plugin suporta a minificação e é muito fácil de trabalhar.

3. W3 Total Cache - é um plugin de desempenho muito poderoso. Ele também suporta combinação script / css, bem como um grande número de outros recursos, por exemplo, ao carregar os scripts combinados em uma CDN.

Scott
fonte