Sede Legale
via Sorrento 11, 00177 Roma (RM)
contact@evermind.it
Tel: +39 327.833.37.60

Sede Operativa
via Giulia 1/C, 89125 Reggio Calabria (RC)
contact@evermind.it
Tel: +39 0965.16.40.041

Back

WordPress: creare una chiamata ajax

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-https://www.evermind.it/wp-content/uploads/2016/04/dev_team-1.png/https://www.evermind.it/wp-content/uploads/2016/04/dev_team-1.png-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

Francesco Biacca
Francesco Biacca
https://www.evermind.it/team/francesco-biacca/