Bisakah kita entah bagaimana menggunakan wp_localize_script () untuk membuat variabel global js tanpa pegangan skrip tertentu yang dapat diakses dari semua file js, bahkan jika skrip js tidak diuraikan dengan benar dengan menggunakan wp_enqueue_script?
Ini adalah kode yang saya gunakan yang menciptakan varibale untuk pegangan 'ajaxscript', jadi saya tidak dapat mengakses objek 'ajaxobject' dalam file js yang dimasukkan dalam header.php langsung oleh <script src="xxx" .... />
wp_register_script( 'ajaxscript', get_bloginfo( 'template_url' ) . '/js/ajaxscript.js', array(), $version );
wp_enqueue_script( 'ajaxscript' );
wp_localize_script( 'ajaxscript', 'ajaxobject',
array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'ajaxnonce' => wp_create_nonce( 'itr_ajax_nonce' )
)
);
wp-enqueue-script
wp-localize-script
Subharanjan
sumber
sumber
wp_localize_script
terjadi. Dengan kedua metode, variabel dapat diakses dari skrip apa punJawaban:
Alih-alih menggunakan wp_localize_script dalam kasus itu, Anda dapat mengaitkan variabel js Anda di wp_head, dengan cara itu akan tersedia untuk semua file js seperti:
Juga seperti yang disarankan oleh @Weston Ruter, Anda dapat mengkode variabel:
sumber
json_encode
sini, misalnya:var ajaxurl = <?php echo json_encode( admin_url( "admin-ajax.php" ) ); ?>;
Anda dapat mengekspor data apa pun yang Anda inginkan di
wp_head
hook, seperti yang ditunjukkan oleh jawaban di atas. Namun, Anda harus menggunakanjson_encode
untuk menyiapkan data PHP untuk diekspor ke JS alih-alih mencoba menanamkan nilai mentah ke dalam literal JS:Menggunakan
json_encode
membuatnya lebih mudah pada diri Anda sendiri, dan itu mencegah kesalahan sintaksis tidak disengaja jika string Anda menyertakan tanda kutip. Yang lebih penting, menggunakanjson_encode
serangan XSS.sumber
Saya akhirnya melakukan ini. Berhasil sekarang !! Terima kasih @ dot1
sumber
json_encode
daripada membuat JSON secara manual.json_encode
sekarang :) Terima kasih @WestonRuter !!Meskipun ini bukan pekerjaan terbaik saya, ini adalah cara langsung untuk menyelesaikan memasukkan data ke dalam respons:
Tambahkan beberapa data JS ke konteks jendela:
Ini akan berfungsi untuk skrip header atau skrip footer dan tidak akan terulang.
sumber