Jak na ajax ve wordpressu?

Ajax se dá ve wordpressu využívat vcelku jednoduše. Dá se využít i functions.php bez nutnosti pluginu.

Prvně je nutné zaregistrovat skript, ve kterém ajax request budeme volat. Potom jej musíme lokalizovat, abychom tam dostali proměnou s cestou k ajax souboru.

function theme_scripts() {
	wp_enqueue_script( 'scripts', get_template_directory_uri() . '/js/scripts.js');
	wp_localize_script( 'scripts', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' )) );
}

add_action( 'wp_enqueue_scripts', 'theme_scripts' );

Nyní se koukneme na zapsání ajaxového requestu v javascriptovém souboru scripts.js:

var data = {
	'action': 'lostPassAjax',
	'email': jQuery("#lost_email_ajax").val()
};

jQuery.post(ajax_object.ajax_url, data, function(response) {
	console.log(response);
});

Pomocí objektu předáváme data. V tomhle případě je to nějaký email. U každého ajax requestu nesmí chybět proměnná action, kterou wordpress rozlišuje jednotlivé ajax requesty. Všimněte si také objektu ajax_object, kterým předáváme ajax url souboru – objekt jsme pomocí wp_localize_script dostali do souboru scripts.js

Nyní je jen nutné napsat funkci pro akci lostPassAjax. To můžeme provést zase ve functions.php:

add_action( 'wp_ajax_lostPassAjax', 'myAjaxFunction' );
add_action( 'wp_ajax_nopriv_lostPassAjax', 'myAjaxFunction' );

function myAjaxFunction(){
	$email = $_POST['email'];
	//do something with email
	echo $email;
	wp_die();
}

Důležité je říci, že funkci musíme zaregistrovat do action hooků ve formátu: wp_ajax_NÁZEV_AKCE a wp_ajax_nopriv_NÁZEV_AKCE. Jsou zde 2 action hooky, protože samotný wp_ajax_ se provede pouze pokud je uživatel přihlášený ve wordpressu. Proto je nutný i wp_ajax_nopriv_, který se provede pokud není uživatel přihlášen.

Data jsou předávána jako $_POST request.

 

Líbí se ti tento článek? Dej mu like! 1
Aby mohl vecnykritik.cz fungovat, je nutno zaplatit aspoň hosting. Můžeš si tedy vypnout adblock a podpořit tento projekt?

Žádný komentář

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *


*