widness
1/13/2018 - 10:37 AM

Use Ajax with Wordpress

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' );
	}
}