SlideShare una empresa de Scribd logo
WordPress
como back-end
de nuestras
apps
@jaimefere jaimefere.es
2
<?php
Jaime Fernández
Desarrollador apps nativas en iOS con
Swift y en Android con Java / Kotlin.
Como freelance desde 2015.
@jaimefere en Twitter.
WordPress como back-end de nuestras apps jaimefere.es
Apartados
3
1
D
etonante
2
W
ordPress
com
o
servidor
3
¿M
obile
Backend
as
a
Service?
4
Ejem
plo
de
app,Tw
hilo
WordPress como back-end de nuestras apps jaimefere.es
1.
Detonante
WordPress como back-end de nuestras apps jaimefere.es
Servicios cloud
5
WordPress como back-end de nuestras apps jaimefere.es
Feria del Empleo
en la Era Digital
WordPress como back-end de nuestras apps jaimefere.es
6
App para acercar a candidatos y
empresas accediendo a los perfiles
registrados en un formulario del
WordPress.
2.
WordPress
como servidor
WordPress como back-end de nuestras apps jaimefere.es
7
↔ ↔
Mejorando prácticas
functions.php
Las credenciales de la
base de datos no salen
del servidor pero los
cambios en el tema
afectan a las apps.
child-themes
Los cambios en el tema
no afectan a las apps
pero un cambio de tema
sí.
plugins
Trabaja de forma
independiente al tema y
se puede activar /
desactivar.
8
WordPress como back-end de nuestras apps jaimefere.es
WordPress
REST API
Entró en el core de WordPress en
enero de 2017.
9
WordPress como back-end de nuestras apps jaimefere.es
API: Interfaz de Programación
de Aplicaciones
WordPress como back-end de nuestras apps jaimefere.es
10
↔ ↔
Conjunto de subrutinas, funciones,
métodos y procedimientos que ofrece
cierta biblioteca para ser utilizado por otro
software como una capa de abstracción.
{"name":"Feria del Empleo FEED","description":"Empleo en la Era
Digital","url":"http://feriadelempleo.es","home":"https://feriad
elempleo.es","gmt_offset":"0","timezone_string":"","namespaces":["oe
mbed/1.0","2fa/v1","wordfence/v1","tests/v5","feed/v5","wp/v2"
],"authentication":[],"routes":{"/":{"namespace":"","methods":["GET
"],"endpoints":[{"methods":["GET"],"args":{"context":{"required":fal
se,"default":"view"}}}],"_links":{"self":"https://feriadelempleo.e
s/wp-json/"}},"/oembed/1.0":{"namespace":"oembed/1.0","methods"
:["GET"],"endpoints":[{"methods":["GET"],"args":{"namespace":{"requi
red":false,"default":"oembed/1.0"},"context":{"required":false,"def
ault":"view"}}}],"_links":{"self":"https://feriadelempleo.es/wp-j
son/oembed/1.0"}},"/oembed/1.0/embed":{"namespace":"oembed/1.0
","methods":["GET"],"endpoints":[{"methods":["GET"],"args":{"url":{"
required":true},"format":{"required":false,"default":"json"},"maxwid
th":{"required":false,"default":600}}}],"_links":{"self":"https://
feriadelempleo.es/wp-json/oembed/1.0/embed"}},"/oembed/1.0/pr
oxy":{"namespace":"oembed/1.0","methods":["GET"],"endpoints":[{"met
hods":["GET"],...
11
Ejemplo de
respuesta en
miweb.com/wp-json
(en bruto)
/wp-json
WordPress como back-end de nuestras apps jaimefere.es
{
"name": "Feria del Empleo FEED",
"description": "Empleo en la Era Digital",
"url": "http://feriadelempleo.es",
"namespaces": ["oembed/1.0","jwt-auth/v1","feed/v5","wp/v2"],
"authentication": [ "oauth1" : {...} ],
"routes": {
"/wp/v2/posts": {
"namespace": "wp/v2",
"methods": [ “GET”, ”POST” ],
"endpoints": [2],
"_links": {
"self": "https://feriadelempleo.es/wp-json/wp/v2/posts"
}
}
},
"_links": {...}
}
12
Ejemplo de
respuesta en
miweb.com/wp-json
(formateado)
/wp-json
WordPress como back-end de nuestras apps jaimefere.es
class WCMad_Rest_Server extends WP_REST_Controller {
public function register_routes() {
$namespace = "wcmad/v1";
register_rest_route($namespace, '/fecha', array(
array(
'methods' => 'GET', // 'POST' 'PUT' 'DELETE'
'args' => array( 'año' => array('required' => true) )
'callback' => array($this, 'get_fecha')
)
));
}
public function hook_rest_server(){
add_action('rest_api_init', array($this, 'register_routes'));
}
public function get_fecha(WP_REST_Request $request){
$año = $request->get_param('año');
return new WP_REST_Response("6 de abril de $año", 200);
}
}
$wcmad_rest_server = new WCMad_Rest_Server();
$wcmad_rest_server->hook_rest_server();
13
Custom
endpoint
WordPress como back-end de nuestras apps jaimefere.es
Código completo
class WCMad_Rest_Server extends WP_REST_Controller {
public function register_routes() {
$namespace = "wcmad/v1";
register_rest_route($namespace, '/fecha', array(
array(
'methods' => 'GET', // 'POST' 'PUT' 'DELETE'
'args' => array('año' => array('required' => true))
'callback' => array($this, 'get_fecha')
)
));
}
public function hook_rest_server(){
add_action('rest_api_init', array($this, 'register_routes'));
}
public function get_fecha(WP_REST_Request $request){
$año = $request->get_param('año');
return new WP_REST_Response("6 de abril de $año", 200);
}
}
$wcmad_rest_server = new WCMad_Rest_Server();
$wcmad_rest_server->hook_rest_server();
14
Namespace
WordPress como back-end de nuestras apps jaimefere.es
Path, método,
parámetros y función
para devolver
resultado
class WCMad_Rest_Server extends WP_REST_Controller {
public function register_routes() {
register_rest_route("wcmad/v19", '/fecha', array(
array(
'methods' => 'GET', // 'POST' 'PUT' 'DELETE'
'args' => array( 'año' => array('required' => true) )
'callback' => array($this, 'get_fecha')
)
));
}
public function hook_rest_server(){
add_action('rest_api_init',
array($this, 'register_routes'));
}
public function get_fecha(WP_REST_Request $request){
$año = $request->get_param('año');
return new WP_REST_Response("6 de abril de $año", 200);
}
}
$wcmad_rest_server = new WCMad_Rest_Server();
$wcmad_rest_server->hook_rest_server();
15
WordPress como back-end de nuestras apps jaimefere.es
Registro
Se publica para ser
usado por las apps
Seguridad
Cookie (plugin)
Basic Authorization.
Usuario y contraseña en base64
en la cabecera de la llamada
Application password
Basic Authorization.
La clave (password) puede ser
renovada.
16
WordPress como back-end de nuestras apps jaimefere.es
OAuth 1.0a
Intercambio de tokens.
Token temporal -> permiso
usuario -> token larga duración
JSON Web Tokens
Standard RFC 7519
Usuario y contraseña solo en la
llamada que pide el token.
public function register_routes() {
register_rest_route("wcmad/v1", '/privado', array(
array(
'methods' => 'GET',
'callback' => array($this, 'get_datos_privados'),
'permission_callback' => 'chequear_permisos'
)
));
}
public function chequear_permisos(){
if( ! current_user_can( ... )){
return new WP_Error('rest_error', __('Error'));
}
return true;
}
public function get_datos_privados(){
return new WP_REST_Response(..., 200);
}
17
permission_callback
controla los permisos
de quien hace la
llamada
Permisos
WordPress como back-end de nuestras apps jaimefere.es
3.
¿MBaaS:
Mobile Backend
as a Service?
WordPress como back-end de nuestras apps jaimefere.es
18
Para ser un MBaaS
19
Estadísticas de usoAnalíticas
Librería para otras
plataformas
SDKWP REST APIAPI
MySQLBase de datos
/wp-content/uploadsAlmacenamiento
Usuarios y roles
Servicios de
autenticación
Trabajos CRON
Automatización de
tareas
WordPress como back-end de nuestras apps jaimefere.es
Panel de
administración
Dashboard
Desde PHP se puedeNotificaciones push
Informe de errores y
cierres
Crashes
4.
Ejemplo de app,
Twhilo
WordPress como back-end de nuestras apps jaimefere.es
20
Hilos de Twitter en
formato artículo.
Del microbloging al
blogging.
21
Twhilo
WordPress como back-end de nuestras apps jaimefere.es
Hilos de Twitter en
formato artículo.
Del microbloging al
blogging.
22
Twhilo
WordPress como back-end de nuestras apps jaimefere.es
Hilos de Twitter en
formato artículo.
Del microbloging al
blogging.
23
Twhilo
WordPress como back-end de nuestras apps jaimefere.es
register_rest_route('twhilo/v1', '/hilo', array(
array(
'methods' => WP_REST_Server::READABLE,
'args' => array('id_tuit' =>
array('required' => true))
'callback' => array($this, 'get_hilo'),
'permission_callback' => 'llamada_desde_app'
)
));
public function llamada_desde_app(){ }
public function get_hilo(){
$id_tuit = $request->get_param(id_tuit);
if( mira en MySQL si $id_tuit es respuesta de un hilo ){
return $hilo;
} else {
// pregunta a Twitter si el tuit pertenece a un hilo
return $hilo o "no es hilo";
}
}
24
Código ejemplo
namespace y
endpoint propios
WP
REST API
WordPress como back-end de nuestras apps jaimefere.es
25WordPress como back-end de nuestras apps jaimefere.es
Hilos de Twitter en
formato artículo.
Del microbloging al
blogging.
Twhilo
Recursos
Enlaces a elementos de interés:
● Mobile Backend as a Service (Wikipedia)
● Autenticación: OAuth, Application
passwords y JSON Web Tokens
● Envío de notificaciones push con PHP
● App Twhilo (Apple Store)
26
WordPress como back-end de nuestras apps jaimefere.es
?>
¿Preguntas?
Por poco tiempo o mucha vergüenza en:
● @jaimefere
● info@jaimefere.es
● jaimefere.es/#contact
27
¡Muchas gracias!
WordPress como back-end de nuestras apps jaimefere.es

Más contenido relacionado

PDF
Servicios web en php, perl, java
PDF
Servicios web
PDF
Servicios web en Java, PHP, Perl y Google
PPTX
Como hacer de todo con PowerShell
PDF
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
PPT
Php Bitter Sweet Symfony!
ODP
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
PDF
Servicios web
Servicios web en php, perl, java
Servicios web
Servicios web en Java, PHP, Perl y Google
Como hacer de todo con PowerShell
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
Php Bitter Sweet Symfony!
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Servicios web

La actualidad más candente (12)

PDF
Facelets
PDF
Primefaces
PDF
Servicios Web Rest con Spring MVC
PDF
primefaces cortesia del portal de java
DOCX
Primefaces hotel.. TERMINADO
PDF
Servicios web java, php, perl, google
PPT
tutorial de slide.com
KEY
Rails intro
PDF
Intro a cakephp
PPTX
introduccion a Ajax
PDF
Asp.net
PDF
Tutorial de cakePHP itst
Facelets
Primefaces
Servicios Web Rest con Spring MVC
primefaces cortesia del portal de java
Primefaces hotel.. TERMINADO
Servicios web java, php, perl, google
tutorial de slide.com
Rails intro
Intro a cakephp
introduccion a Ajax
Asp.net
Tutorial de cakePHP itst
Publicidad

Similar a WordPress como back-end de nuestras apps (20)

PPTX
La guía WP REST API para no desarrolladores
PDF
WordPress REST API: Con la ayuda de mis amigos
PDF
WordPress Sin Fronteras
PDF
Creando un Theme con WP Rest API
PDF
App todo gas: WordPress no es solo para web
PDF
Wordpress: El Framework desconocido
ODP
Desarrollando un API con REST
PDF
PPTX
Desarrollo de aplicaciones Web fundamenteos
PDF
ODP
RESTful APIs con Tastypie
PDF
Servicios Rest con Jersey
PPTX
S4-PD2-2.2. REST
PDF
Código mantenible, en Wordpress.
PDF
WordCamp Barcelona 2016 - Desarrollo de temas con AngularJS y la REST API de ...
PPTX
S4-PD2-REST-REST FULL
PDF
Web services restful con JAX-RS
PDF
Postman.pdf
La guía WP REST API para no desarrolladores
WordPress REST API: Con la ayuda de mis amigos
WordPress Sin Fronteras
Creando un Theme con WP Rest API
App todo gas: WordPress no es solo para web
Wordpress: El Framework desconocido
Desarrollando un API con REST
Desarrollo de aplicaciones Web fundamenteos
RESTful APIs con Tastypie
Servicios Rest con Jersey
S4-PD2-2.2. REST
Código mantenible, en Wordpress.
WordCamp Barcelona 2016 - Desarrollo de temas con AngularJS y la REST API de ...
S4-PD2-REST-REST FULL
Web services restful con JAX-RS
Postman.pdf
Publicidad

WordPress como back-end de nuestras apps

  • 2. 2 <?php Jaime Fernández Desarrollador apps nativas en iOS con Swift y en Android con Java / Kotlin. Como freelance desde 2015. @jaimefere en Twitter. WordPress como back-end de nuestras apps jaimefere.es
  • 4. 1. Detonante WordPress como back-end de nuestras apps jaimefere.es
  • 5. Servicios cloud 5 WordPress como back-end de nuestras apps jaimefere.es
  • 6. Feria del Empleo en la Era Digital WordPress como back-end de nuestras apps jaimefere.es 6 App para acercar a candidatos y empresas accediendo a los perfiles registrados en un formulario del WordPress.
  • 7. 2. WordPress como servidor WordPress como back-end de nuestras apps jaimefere.es 7 ↔ ↔
  • 8. Mejorando prácticas functions.php Las credenciales de la base de datos no salen del servidor pero los cambios en el tema afectan a las apps. child-themes Los cambios en el tema no afectan a las apps pero un cambio de tema sí. plugins Trabaja de forma independiente al tema y se puede activar / desactivar. 8 WordPress como back-end de nuestras apps jaimefere.es
  • 9. WordPress REST API Entró en el core de WordPress en enero de 2017. 9 WordPress como back-end de nuestras apps jaimefere.es
  • 10. API: Interfaz de Programación de Aplicaciones WordPress como back-end de nuestras apps jaimefere.es 10 ↔ ↔ Conjunto de subrutinas, funciones, métodos y procedimientos que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
  • 11. {"name":"Feria del Empleo FEED","description":"Empleo en la Era Digital","url":"http://feriadelempleo.es","home":"https://feriad elempleo.es","gmt_offset":"0","timezone_string":"","namespaces":["oe mbed/1.0","2fa/v1","wordfence/v1","tests/v5","feed/v5","wp/v2" ],"authentication":[],"routes":{"/":{"namespace":"","methods":["GET "],"endpoints":[{"methods":["GET"],"args":{"context":{"required":fal se,"default":"view"}}}],"_links":{"self":"https://feriadelempleo.e s/wp-json/"}},"/oembed/1.0":{"namespace":"oembed/1.0","methods" :["GET"],"endpoints":[{"methods":["GET"],"args":{"namespace":{"requi red":false,"default":"oembed/1.0"},"context":{"required":false,"def ault":"view"}}}],"_links":{"self":"https://feriadelempleo.es/wp-j son/oembed/1.0"}},"/oembed/1.0/embed":{"namespace":"oembed/1.0 ","methods":["GET"],"endpoints":[{"methods":["GET"],"args":{"url":{" required":true},"format":{"required":false,"default":"json"},"maxwid th":{"required":false,"default":600}}}],"_links":{"self":"https:// feriadelempleo.es/wp-json/oembed/1.0/embed"}},"/oembed/1.0/pr oxy":{"namespace":"oembed/1.0","methods":["GET"],"endpoints":[{"met hods":["GET"],... 11 Ejemplo de respuesta en miweb.com/wp-json (en bruto) /wp-json WordPress como back-end de nuestras apps jaimefere.es
  • 12. { "name": "Feria del Empleo FEED", "description": "Empleo en la Era Digital", "url": "http://feriadelempleo.es", "namespaces": ["oembed/1.0","jwt-auth/v1","feed/v5","wp/v2"], "authentication": [ "oauth1" : {...} ], "routes": { "/wp/v2/posts": { "namespace": "wp/v2", "methods": [ “GET”, ”POST” ], "endpoints": [2], "_links": { "self": "https://feriadelempleo.es/wp-json/wp/v2/posts" } } }, "_links": {...} } 12 Ejemplo de respuesta en miweb.com/wp-json (formateado) /wp-json WordPress como back-end de nuestras apps jaimefere.es
  • 13. class WCMad_Rest_Server extends WP_REST_Controller { public function register_routes() { $namespace = "wcmad/v1"; register_rest_route($namespace, '/fecha', array( array( 'methods' => 'GET', // 'POST' 'PUT' 'DELETE' 'args' => array( 'año' => array('required' => true) ) 'callback' => array($this, 'get_fecha') ) )); } public function hook_rest_server(){ add_action('rest_api_init', array($this, 'register_routes')); } public function get_fecha(WP_REST_Request $request){ $año = $request->get_param('año'); return new WP_REST_Response("6 de abril de $año", 200); } } $wcmad_rest_server = new WCMad_Rest_Server(); $wcmad_rest_server->hook_rest_server(); 13 Custom endpoint WordPress como back-end de nuestras apps jaimefere.es Código completo
  • 14. class WCMad_Rest_Server extends WP_REST_Controller { public function register_routes() { $namespace = "wcmad/v1"; register_rest_route($namespace, '/fecha', array( array( 'methods' => 'GET', // 'POST' 'PUT' 'DELETE' 'args' => array('año' => array('required' => true)) 'callback' => array($this, 'get_fecha') ) )); } public function hook_rest_server(){ add_action('rest_api_init', array($this, 'register_routes')); } public function get_fecha(WP_REST_Request $request){ $año = $request->get_param('año'); return new WP_REST_Response("6 de abril de $año", 200); } } $wcmad_rest_server = new WCMad_Rest_Server(); $wcmad_rest_server->hook_rest_server(); 14 Namespace WordPress como back-end de nuestras apps jaimefere.es Path, método, parámetros y función para devolver resultado
  • 15. class WCMad_Rest_Server extends WP_REST_Controller { public function register_routes() { register_rest_route("wcmad/v19", '/fecha', array( array( 'methods' => 'GET', // 'POST' 'PUT' 'DELETE' 'args' => array( 'año' => array('required' => true) ) 'callback' => array($this, 'get_fecha') ) )); } public function hook_rest_server(){ add_action('rest_api_init', array($this, 'register_routes')); } public function get_fecha(WP_REST_Request $request){ $año = $request->get_param('año'); return new WP_REST_Response("6 de abril de $año", 200); } } $wcmad_rest_server = new WCMad_Rest_Server(); $wcmad_rest_server->hook_rest_server(); 15 WordPress como back-end de nuestras apps jaimefere.es Registro Se publica para ser usado por las apps
  • 16. Seguridad Cookie (plugin) Basic Authorization. Usuario y contraseña en base64 en la cabecera de la llamada Application password Basic Authorization. La clave (password) puede ser renovada. 16 WordPress como back-end de nuestras apps jaimefere.es OAuth 1.0a Intercambio de tokens. Token temporal -> permiso usuario -> token larga duración JSON Web Tokens Standard RFC 7519 Usuario y contraseña solo en la llamada que pide el token.
  • 17. public function register_routes() { register_rest_route("wcmad/v1", '/privado', array( array( 'methods' => 'GET', 'callback' => array($this, 'get_datos_privados'), 'permission_callback' => 'chequear_permisos' ) )); } public function chequear_permisos(){ if( ! current_user_can( ... )){ return new WP_Error('rest_error', __('Error')); } return true; } public function get_datos_privados(){ return new WP_REST_Response(..., 200); } 17 permission_callback controla los permisos de quien hace la llamada Permisos WordPress como back-end de nuestras apps jaimefere.es
  • 18. 3. ¿MBaaS: Mobile Backend as a Service? WordPress como back-end de nuestras apps jaimefere.es 18
  • 19. Para ser un MBaaS 19 Estadísticas de usoAnalíticas Librería para otras plataformas SDKWP REST APIAPI MySQLBase de datos /wp-content/uploadsAlmacenamiento Usuarios y roles Servicios de autenticación Trabajos CRON Automatización de tareas WordPress como back-end de nuestras apps jaimefere.es Panel de administración Dashboard Desde PHP se puedeNotificaciones push Informe de errores y cierres Crashes
  • 20. 4. Ejemplo de app, Twhilo WordPress como back-end de nuestras apps jaimefere.es 20
  • 21. Hilos de Twitter en formato artículo. Del microbloging al blogging. 21 Twhilo WordPress como back-end de nuestras apps jaimefere.es
  • 22. Hilos de Twitter en formato artículo. Del microbloging al blogging. 22 Twhilo WordPress como back-end de nuestras apps jaimefere.es
  • 23. Hilos de Twitter en formato artículo. Del microbloging al blogging. 23 Twhilo WordPress como back-end de nuestras apps jaimefere.es
  • 24. register_rest_route('twhilo/v1', '/hilo', array( array( 'methods' => WP_REST_Server::READABLE, 'args' => array('id_tuit' => array('required' => true)) 'callback' => array($this, 'get_hilo'), 'permission_callback' => 'llamada_desde_app' ) )); public function llamada_desde_app(){ } public function get_hilo(){ $id_tuit = $request->get_param(id_tuit); if( mira en MySQL si $id_tuit es respuesta de un hilo ){ return $hilo; } else { // pregunta a Twitter si el tuit pertenece a un hilo return $hilo o "no es hilo"; } } 24 Código ejemplo namespace y endpoint propios WP REST API WordPress como back-end de nuestras apps jaimefere.es
  • 25. 25WordPress como back-end de nuestras apps jaimefere.es Hilos de Twitter en formato artículo. Del microbloging al blogging. Twhilo
  • 26. Recursos Enlaces a elementos de interés: ● Mobile Backend as a Service (Wikipedia) ● Autenticación: OAuth, Application passwords y JSON Web Tokens ● Envío de notificaciones push con PHP ● App Twhilo (Apple Store) 26 WordPress como back-end de nuestras apps jaimefere.es
  • 27. ?> ¿Preguntas? Por poco tiempo o mucha vergüenza en: ● @jaimefere ● info@jaimefere.es ● jaimefere.es/#contact 27 ¡Muchas gracias! WordPress como back-end de nuestras apps jaimefere.es