wp_enqueue_scripts, wp_register_scripts, wp_print_scripts: saya bingung

8
  • Saya sudah membaca sedikit tentang hal ini, tetapi semakin banyak saya membaca - semakin saya bingung.

  • Dapatkah seseorang menjelaskan kepada saya secara singkat apa perbedaan yang tepat antara wp_enqueue_scripts, wp_register_scriptsdan wp_print_scripts?

  • Sebagai contoh, saya memiliki kode berikut di functions.php saya - dan itu berfungsi, tapi saya tidak mengerti mengapa saya tidak dapat menggunakan wp_print_scriptsuntuk stylesheet, sedangkan kode masih berfungsi jika saya gunakan wp_enqueue_scriptsuntuk file javascript:

    add_action('wp_print_scripts', 'add_my_js');
    function add_my_js(){
        if(!is_admin()){
            wp_enqueue_script('default',  get_bloginfo('stylesheet_directory').'/js/default.js', array('jquery'));
        }
    }
    
    add_action('wp_enqueue_scripts', 'add_my_stylesheet');
    function add_my_stylesheet() {
        wp_register_style('default', get_bloginfo( 'stylesheet_url'));
        wp_enqueue_style( 'default');
    }
    
ptriek
sumber

Jawaban:

9

wp_print_scriptsadalah tindakan yang berjalan ketika skrip di-output ke template. wp_register_scriptdan wp_enqueue_scriptadalah fungsi untuk mendaftar / enqueueing skrip untuk menjadi output saat wp_print_scriptsdijalankan.

Anda tidak dapat mendaftarkan atau mengaktifkan enqueue styles di wp_print_scriptsaction hook karena styles telah menjadi output di wp_print_styleshook, yang berjalan sebelumnya wp_print_scripts.

lihat referensi tindakan untuk melihat urutan hal-hal yang dieksekusi dalam permintaan:

22. wp_head
23. wp_enqueue_scripts
24. wp_print_styles
25. wp_print_scripts
Milo
sumber
Jadi, apa perbedaan antara wp_enqueue_script dan wp_register_script?
Jeff K.
3
wp_register_script mendaftarkan skrip dengan WordPress, tetapi tidak menambahkannya ke antrian. Jika Anda tidak juga memanggil wp_enqueue_script, skrip tidak akan muncul. Tujuan dari ini adalah untuk memungkinkan Anda mendaftarkan skrip Anda sekali, kemudian secara bersyarat memberikannya di tempat lain dalam kode Anda. Ini berguna untuk pengembang plugin tempat skrip dapat dibuat di beberapa tempat dalam kode. Anda juga dapat langsung mengaktifkan skrip Anda tanpa mendaftarkannya.
Milo