Potrà sembrare strano, ma spesso mi ritrovo a sviluppare siti web in WordPress senza dare troppo peso alla possibilità di sfruttare le potenzialità offerte dal meccanismo Ajax – sebbene, invece, ne faccio larghissimo uso in ambienti Enterprise.

Mi sembra quindi interessante vedere un approccio di base per poter effettuare una chiamata di questo tipo in un sito WordPress.

FRONT-END – PAGE.PHP

Nel front-end, le chiamate ajax non presentano nulla di particolare rispetto all’ambiente Enterprise, se non per lo specifico URL da richiamare:
data = {
‘action’: ‘wpse31321_action’,
‘ID’: id
};

$.ajax({
type: “POST”,
url: ‘/wp-admin/admin-ajax.php’,
data: data ,
dataType: “json”,
success: function (msg) {
},
async: false,
failure: function (msg, ajaxOptions, thrownError) {
alert(‘Error: ‘ + msg.status + ‘ ‘ + msg.statusText + ‘ ‘ + thrownError);
}
});

FUNCTIONS.PHP

add_action( ‘wp_ajax_wpse31321_action’, ‘wpse31321_ajax’ );
add_action( ‘wp_ajax_nopriv_wpse31321_action’, ‘wpse31321_ajax’ );

function wpse31321_ajax()
{
global $wp_query,$paged,$post;

if( isset ( $_POST[‘ID’] ) )
{
while ( $yourPost->have_posts() ) : $yourPost->the_post();
$custom = get_post_custom($post->ID);
endwhile;

echo json_encode($custom);
die();
}
else
{
die( ‘-2’ );
}
}

Come si vede, bisogna porre attenzione ad inserire i due hooks: wp_ajax_wpse31321_action (per gli utenti autenticati) e wp_ajax_nopriv_wpse31321_action (per gli utenti anonimi)

ref: wordpress.stackexchange.com

STAY INSPIRED

ISCRIVITI ALLA NOSTRA NEWSLETTER INSPIRING FUTURE PER AVERE NOTIZIE ED AGGIORNAMENTI DIRETTAMENTE SULLA TUA EMAIL
A COSA SEI INTERESSATO?
I dati verranno trattati nel rispetto della normativa sulla protezione dei dati personali. Tutte le informazioni sono disponibili nella Privacy Policy

Dillo ad un amico

autore

Cercando l'impossibile, l'uomo ha sempre realizzato e conosciuto il possibile, e coloro che si sono saggiamente limitati a ciò che sembrava possibile non sono mai avanzati di un sol passo.