Mungkinkah skrip WP / pemuat gaya digunakan untuk menyatukan dan gzip skrip dan gaya di front-end?

27

WP memiliki pemuat javascript yang bagus termasuk dalam wp-admin: http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-scripts.php

dan pemuat CSS: http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-styles.php

Saya bertanya-tanya apakah mungkin untuk menggunakannya di front-end juga, bukan hanya admin, karena mereka dapat menggabungkan semua skrip enqueued, dan melayani mereka sebagai file gzip tunggal

Alex
sumber
Bukankah ini efektif hanya dengan bertanya "Bisakah saya menggunakan enqueues untuk halaman non-admin?" .. Jawabannya adalah Ya.
t31os
5
@ t31os Pertanyaannya adalah apakah Anda dapat menggunakan load-scripts.php dan load-styles untuk menggabungkan dan gzip style dan skrip seperti yang dilakukan untuk admin. Saya mengklarifikasi judul pertanyaan.
Chris_O

Jawaban:

12

jawaban terlambat

Dari tampilan singkat:

Anda harus menggunakan

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

Lalu lompat ke $GLOBALS['wp_scripts']:

Menggunakan…

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

... untuk memperpanjangnya.

Dan kemudian gunakan

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

untuk menambahkan skrip.

Catatan:

  1. Script terkompresi mendapatkan dicari oleh .dev.js(saat SCRIPT_DEBUGini TRUE).
  2. Tampaknya sama mungkin untuk $wp_styles.
  3. EDIT: WP 3.5 akan mengubah perilaku ini dan digunakan .jsuntuk versi "dev" dan ".min.js" saat ( SCRIPT_DEBUGsedang TRUE);

(Tapi saya kira ini hanya akan berfungsi jika Anda menggunakan plugin atau plugin-mu.)

Itu belum diuji dan saya tidak yakin jika ini akan berhasil.

kaisar
sumber
Saat ini saya sedang mencoba melakukan sesuatu seperti ini. Yang buruk adalah bahwa load-scripts.php exit()pada akhirnya jadi Anda tidak dapat melakukan apa pun setelahnya.
Benjamin Intal
Jawaban ini sebenarnya menyelamatkan saya dari sakit kepala hebat. Jika SCRIPT_DEBUGadalah true, semua skrip enqueued individual seperti di frontend. Namun, jika SCRIPT_DEBUGini false, tampaknya enqueue script secara simultan melalui load-scripts.php.
Michael Ecklund
@MichaelEcklund Ya, "switch" ini - secara konstan menggabungkan atau mengirim file tunggal. Ini dari waktu sebelum peta sumber dan alat pengembang saat ini.
kaiser
6

Ini adalah pertanyaan yang sangat bagus dan akan menjadi fitur hebat bagi WordPress untuk dimasukkan.

Beberapa jawaban lain tidak menjawab pertanyaan utama.

Saya bertanya-tanya apakah mungkin untuk menggunakannya di front-end juga, bukan hanya admin, karena mereka dapat menggabungkan semua skrip enqueued, dan melayani mereka sebagai file gzip tunggal.

Tidak. Saat ini tidak dimungkinkan untuk menggunakan pemuat skrip bawaan untuk menggabungkan Css dan skrip untuk ujung depan.

Ada diskusi tentang ini di WP Hackers beberapa tahun yang lalu dan ada tiket trac untuk peningkatan ini yang telah diterima tetapi untuk rilis di masa depan.

Chris_O
sumber
3

Jika Anda perlu membuat file CSS di ujung depan:

1) Daftarkan gaya melalui wp_register_style ($ handle, $ src) 2) Hook wp_enqueue_style ($ handle) ke hook wp_print_styles.

Jika Anda perlu membuat skrip di ujung depan:

1) Daftarkan gaya melalui wp_register_script ($ handle, $ src) 2) Hook wp_enqueue_script ($ handle) ke dalam kait wp_head.

(Catatan: Saya berharap kait wp_print_styles untuk ini, tetapi kait ini tampaknya tidak berfungsi seperti yang diharapkan.)

Chip Bennett
sumber
0

Saya punya beberapa skrip yang mungkin ingin Anda lihat.

1. Combine.php - Pada sejumlah tema saya, saya telah mengimplementasikan skrip ini . Ini mendukung fungsi serupa dan dapat dijatuhkan ke folder templat Anda dan bekerja dengan relatif mudah.

2. WP Minify - Plugin ini mendukung minifying dan sangat mudah digunakan.

3. W3 Total Cache - adalah plugin kinerja yang sangat kuat. Ini juga mendukung kombinasi skrip / css serta sejumlah besar fitur lain, misalnya mematikan memuat skrip gabungan ke CDN.

Scott
sumber