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

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.