WP_AJAX adalah kelas untuk berinteraksi dengan sistem AJAX bawaan WordPress. Kelas ini dirancang untuk sepenuhnya mengabstraksi pengembang dari sistem berbasis hook tradisional ke struktur gaya pengontrol yang bersih. Cukup tentukan kelasnya, gema url dengan metode url($params = []) dan tulis kode apa yang ingin Anda jalankan dalam metode run().
Class ExampleAction extends WP_AJAX {
protected $ action = ' example-action ' ;
protected function run (){
// Your Code Here!
update_option ( ' name ' , $ this -> get ( ' name ' ));
}
}
ExampleAction:: listen ();
ExampleAction::url() // http://example.com/wp-admin/admin-ajax.php?action=example-action
ExampleAction:: url ([ ' name ' => ' Anthony Budd ' ]) // http://example.com/wp-admin/admin-ajax.php?action=example-action&name=Anthony%20Budd
ContohAction.php
< a href =" <?= ExampleAction::url(['name' => 'Anthony Budd']) ?> " > This is a link </ a >
Halaman-Template.php
$ ( '.submit-btn' ) . click ( function ( ) {
$ . post ( 'http://example.com/wp-admin/admin-ajax.php' , {
action : 'example-action' ,
name : $ ( '.name-field' ) . val ( ) ,
} , function ( data ) {
console . log ( data )
} , 'JSON' ) ;
} ) ;
skrip.js
Memerlukan WP_AJAX dengan komposer
$ composer require anthonybudd/wp_ajax
Unduh kelas WP_AJAX dan minta itu di bagian atas file fungsi.php Anda.
require ' src/WP_AJAX.php ' ;
Anda perlu membuat kelas baru yang memperluas WP_AJAX. Kelas ini harus memiliki satu properti terproteksi bernama $action dan satu metode terproteksi bernama run(). $action akan menjadi nama tindakan AJAX Lihat wp_ajax_(action).
Class Example extends WP_AJAX
{
protected $ action = ' example ' ;
protected function run (){
echo " Success! " ;
}
}
Selanjutnya Anda harus memanggil metode statis mendengarkan(). Ini akan membuat semua hook sehingga WordPress tahu untuk memanggil metode run() ketika titik akhir AJAX yang benar tercapai. Catatan: Anda perlu memanggil metode listening() untuk setiap tindakan AJAX Anda.
ExampleAJAX:: listen ();
Jika Anda hanya ingin mengizinkan pengguna yang masuk untuk mengakses titik akhir AJAX Anda, tambahkan argumen FALSE ke metode mendengarkan.
ExampleAJAX:: listen ( FALSE );
Jika Anda ingin merespons permintaan AJAX dengan data, metode JSONResponse() akan secara otomatis menyetel header tipe konten ke 'application/json' dan JSON mengkodekan data yang diberikan ke metode tersebut.
Saya mengetahui bahwa WordPress memiliki fungsi yang disebut wp_send_json() tetapi, karena saya tahu betapa mengganggunya pengembang WP karena saya menyertakan metode ini, saya tidak akan menghapusnya.
Class ExampleAJAX extends WP_AJAX {
..
protected function run (){
$ post5 = get_post ( 5 );
$ this -> JSONResponse ( $ post5 );
}
}
Example:: url () // Returns the url of the ajax endpoint. Example http://ajax.local/wp/wp-admin/admin-ajax.php?action=example
$ this -> isLoggedIn (); // Returns TRUE or FALSE if the current visitor is a logged in user.
$ this -> has ( $ key ); // has() will return TRUE or FALSE if an element exists in the $_REQUEST array with a key of $key
$ this -> get ( $ key , [ $ default = NULL ]); // The get() method will return the specified HTTP request variable. If the variable does not exist it will return NULL by default. If you would like to set a custom string as the default, provide it as the second argument.
$ this -> requestType (); // Returns 'PUT', 'POST', 'GET', 'DELETE' depending on HTTP request type
$ this -> requestType ( ' POST ' ); // Returns (bool)
$ this -> requestType ([ ' POST ' , ' PUT ' ]); // Returns (bool)
Class CreatePost extends WP_AJAX
{
protected $ action = ' create_post ' ;
protected function run (){
if ( $ this -> isLoggedIn ()){
$ post = [
' post_status ' => ' publish '
];
if ( $ this -> requestType ([ ' POST ' , ' put ' ]) ){
$ post [ ' post_content ' ] = ' This request was either POST or PUT ' ;
} else if ( $ this -> requestType ( ' get ' ) ){
$ post [ ' post_content ' ] = ' This request was GET ' ;
}
$ post [ ' post_title ' ] = sprintf ( ' This post was created by %s ' , $ this -> user -> data -> user_nicename );
wp_insert_post ( $ post );
$ this -> JSONResponse ( $ post );
}
}
}
CreatePost:: listen ();
// http://example.com/wp-admin/admin-ajax.php?action=create_post