際際滷

際際滷Share a Scribd company logo
Andrea Cardinali
WP ASYNC 101
An Introduction to wp-ajax and REST API
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
 Entrepreneur @ Performize
 WP Dev since 2009
 Web Performance Lover
 Speaker
ANDREA CARDINALI
TABLE OF
CONTENTS
WP-AJAX & REST API
1. QUICK INTRODUCTION
2. COMPARISON (PROS & CONS)
3. AUTHENTICATION
4. PERFORMANCE
5. QUESTION TIME
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
POLL TIME
wp-ajax vs rest api
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
(wp-)AJAX
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
 wp-admin stuff
 plugins with option panel
 theme customizer
 heartbeat
 Page Builder 
 Infinite scroll
 WooCommerce ajax cart
JSON REST API
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
 Gutenberg
 Many plugins (es. CF7)
 WooCommerce API
 WordPress as Backend
STOP HIT REFRESH
(ajax)
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
ASYNCRONOUS
JAVASCRIPT
AND
XML
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
ASYNCRONOUS
JAVASCRIPT
AND
XML
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
ASYNC REQUEST EXAMPLE
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: { action: nome_azione,
nome: WordCamp Bari }
}).done(function( response ) {
alert( response );
});
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
ASYNC REQUEST EXAMPLE
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: { action: nome_azione,
nome: WordCamp Bari }
}).done(function( response ) {
alert( response );
});
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
ASYNC REQUEST EXAMPLE
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: { action: nome_azione,
nome: WordCamp Bari }
}).done(function( response ) {
alert( response );
});
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
var ajaxurl=
<?php echo
admin_url('admin-ajax.php)
?>
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
https://www.miosito.it/wp-admin/admin-ajax.php
admin-ajax.php
ASYNC REQUEST EXAMPLE
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: { action: nome_azione,
nome: WordCamp Bari }
}).done(function( response ) {
alert( response );
});
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
ASYNC REQUEST EXAMPLE
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: { action: nome_azione,
nome: WordCamp Bari }
}).done(function( response ) {
alert( response );
});
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
url: ajaxurl,
data: { action: nome_azione,
parametro: parametro_aggiuntivo' }
}).done(function( response ) {
alert( response );
});
add_action("wp_ajax_$action",my_callback);
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
$action=nome_azione;
add_action("wp_ajax_$action",my_callback);
function my_callback()
{
echo Hello .$_POST[nome].!;
wp_die();
}
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
ACTION
ASYNC REQUEST
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: { action: nome_azione,
nome: WordCamp Bari }
}).done(function( response ) {
alert( response );
});
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
ASYNC REQUEST WITH JSON HANDLING
jQuery.ajax({
type: "POST",
url: ajaxurl,
dataType: json
data: { action: nome_azione,
nome: WordCamp Bari }
}).done(function( response ) {
if(response.success===true)
alert( response.data );
});
add_action("wp_ajax_$action",my_callback);
function my_callback()
{
wp_send_json_success( Hello .$_POST[nome].!);
}
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
ACTION WITH JSON RESPONSE
wp_send_json_success($data,$status_code=null)
wp_send_json_error($data,$status_code=null)
wp_send_json($response,$status_code=null)
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
JSON RESPONSE
//authenticated user only
add_action("wp_ajax_$action",my_callback);
//anonymous users
add_action("wp_ajax_nopriv_$action",my_callback);
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
SAME ACTION, DIFFERENT HOOK NAME
(wp-)AJAX
TAKE AWAY
1. admin_url('admin-
ajax.php)
2. plain html or json
3. $action parameter
4. wp_ajax_{$action}
5. wp_ajax_nopriv_{$action}
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
WP JSON REST API
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
JavaScript Object Notation (data representation)
Application Programming Interface (contract)
REpresentational State Transfer (software architecture)
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
JSON + REST + API
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
https://2019.bari.wordcamp.org/wp-json/wp/v2/speakers/992
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
https://2019.bari.wordcamp.org/wp-json/wp/v2/speakers/992
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
/AndreaCardinali/rivoluziona-il-tuo-sito-con-le-wp-
rest-api-andrea-cardinali
https://wordpress.tv/2018/04/16/andrea-cardinali-rivoluziona-il-tuo-sito-con-le-
wp-rest-api/
JSON REST API
TAKE AWAY
 REST API
 JSON only
 default since WP 4.7
 Default endpoints
 Custom routes
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
wp-ajax
vs
REST api
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
wp-ajax
vs
REST api
 authentication
 performances
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
AUTHENTICATION
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
AUTHENTICATION
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
AUTHENTICATION
admin-ajax
TAKE AWAY
1. COOKIE BASED
2. wp_ajax_$action for
authenticated user
3. wp_ajax_nopriv_$action
for anonymous
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
AUTHENTICATION
WP REST API
TAKE AWAY
1. COOKIE BASED (by
default)
2. MUST HAVE for C.U.D.
requests
3. ALTERNATIVES
(throught plugins):
HTTP-AUTH,
JWT,
oAuth 1.0a
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
PERFORMANCES
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
AJAX REQUEST
LIFECYCLE
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
/wp-load.php
/wp-config.php
/wp-settings.php
//(plugin,themes, rest-api)
/wp-admin/admin.php
/wp-admin/includes/ajax-actions.php
// verifica aggio core,plugin ecc
do_action(admin_init)
do_action(wp_ajax_$action)
REST API
REQUEST
LIFECYCLE
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
/index.php
/wp-blog-header.php
/wp-load.php
/wp-config.php
/wp-settings.php
//(plugins, themes, rest API)
AJAX REQUEST
LIFECYCLE
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
/wp-admin/admin-ajax.php
/wp-load.php
/wp-config.php
/wp-settings.php
/wp-admin/admin.php
/wp-admin/includes/ajax-actions.php
do_action(admin_init)
do_action(wp_ajax_$action)
/index.php
/wp-blog-header.php
/wp-load.php
/wp-config.php
/wp-settings.php
//(plugins, themes, rest API)
AJAX REQUEST REST API REQUEST
PAY ATTENTION
to
admin-ajax.php
usage
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
IT DEPENDS!
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
PLUGINS  https://it.wordpress.org/plu
gins/heartbeat-control/
 https://wordpress.org/plugin
s/plugin-organizer/
 https://it.wordpress.org/plug
ins/rest-manager/
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
 WP DEV
 WOOCOMMERCE DEV
 WEB PERFORMANCE
ADDICTED
 REMOTE WORKING
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali
https://www.performize.it/jobs/
THANK YOU!
Andrea Cardinali
Wordcamp Bari - 18 Maggio 2019 - @andreacardinali

More Related Content

WordPress Async 101 - An Introduction to wp-ajax and rest api - WordCamp Bari 2019 - Andrea Cardinali