Use Ajax with Wordpress
// Pour utiliser cette ressource en front,
// … mon script a besoin de connaître l'URL d'adminAjax…
// … pour le pousser dans la variable url !
add_action( 'wp_enqueue_scripts', 'myenqueue' );
function myenqueue() {
wp_enqueue_script( 'mon-script-ajax', get_template_directory_uri() . '/js/script.js', array('jquery') );
wp_localize_script( 'mon-script-ajax', 'adminAjax', admin_url( 'admin-ajax.php' ) );
}
// J'utilise les hooks
add_action( 'wp_ajax_get_my_post', 'myfunction' );
add_action( 'wp_ajax_nopriv_get_my_post', 'myfunction' );
function myfunction() {
// Je teste si je peux renvoyer l'article
if ( isset( $_POST['id'] )
&& 'post' == get_post_type( $_POST['id'] )
&& 'publish' == get_post_status( $_POST['id'] ) ) {
$id = (int)$_POST['id'];
// je récupère l'article…
// … et je construit le HTML
$post = get_post( $id );
$data = array();
$data['article'] = '<h1>' . apply_filters( 'the_title', $post->post_title ) . '</h1>';
$data['article'] .= apply_filters( 'the_content', $post->post_content );
// Je le renvoie
wp_send_json_success( $data );
} else {
// Sinon j'envoie une erreur
wp_send_json_error( 'article indisponible' );
}
}