SlideShare a Scribd company logo
Wprowadzenie do WP-API
Tomasz Dziuda
Tomasz Dziuda
Lead Developer @
@dziudek
http://dziudek.pl
http://dziudek.github.io/wp-links
http://dziudek.github.io/dev-links
Disclaimer
Będę mówił o WP-API w wersji v.2.*
obecnie w wersji beta, ale to najbliższa przyszłość WP-API
Idea
Źródło: https://wordpress.org/plugins/rest-api/
+
WP-API
+
WP-API
GET/POST/PUT/DELETE
Opcjonalnie: {“json”: “data”}
GET/POST/PUT/DELETE
{“json”: “data”}
+
WP-API
Opcjonalnie: {“json”: “data”}
{“json”: “data”}
wp_ajax_{action}
wp_ajax_nopriv_{action}
+
WP-API
GET/POST/PUT/DELETE
Opcjonalnie: {“json”: “data”}
{“json”: “data”}
wp_ajax_{action}
wp_ajax_nopriv_{action}
+
WP-API
GET/POST/PUT/DELETE
Opcjonalnie: {“json”: “data”}
JSON jako nośnik danych
Wtyczka JSON Viewer: https://chrome.google.com/webstore/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh/
Struktura URLi
wp-json/
Struktura URLi
wp-json/<namespace>
wp/v2
Struktura URLi
wp-json/<namespace>/<zasób>
wp/v2 posts
Struktura URLi
wp-json/<namespace>/<zasób>/<id_lub_filtr>
wp/v2 posts 128
Struktura URLi
wp-json/<namespace>/<zasób>/<id_lub_filtr>/<dodatkowe_zasoby>
wp/v2 posts 128 terms/tag
! " { }Wymaga autoryzacji Nie wymaga autoryzacji Wymaga przesłania danych JSON
GET wp-json/wp/v2/posts/"!
! " { }Wymaga autoryzacji Nie wymaga autoryzacji Wymaga przesłania danych JSON
GET wp-json/wp/v2/posts/
GET wp-json/wp/v2/posts/128
"!
"!
! " { }Wymaga autoryzacji Nie wymaga autoryzacji Wymaga przesłania danych JSON
GET wp-json/wp/v2/posts/
GET wp-json/wp/v2/posts/128
POST wp-json/wp/v2/posts/
"!
{ }
"!
!
! " { }Wymaga autoryzacji Nie wymaga autoryzacji Wymaga przesłania danych JSON
GET wp-json/wp/v2/posts/
GET wp-json/wp/v2/posts/128
POST wp-json/wp/v2/posts/
PUT wp-json/wp/v2/posts/128
"!
{ }
"!
!
{ }!
! " { }Wymaga autoryzacji Nie wymaga autoryzacji Wymaga przesłania danych JSON
GET wp-json/wp/v2/posts/
GET wp-json/wp/v2/posts/128
POST wp-json/wp/v2/posts/
PUT wp-json/wp/v2/posts/128
DELETE wp-json/wp/v2/posts/128
"!
{ }
"!
!
{ }!
!
! " { }Wymaga autoryzacji Nie wymaga autoryzacji Wymaga przesłania danych JSON
Przykłady
Przykłady
wp-json/wp/v2/posts/303
wp-json/wp/v2/posts?filter[cat]=1,2,3
wp-json/wp/v2/posts?filter[posts_per_page]=20
wp-json/terms/category
wp-json/users/me
Przykłady
wp-json/wp/v2/posts/303
wp-json/wp/v2/posts?filter[cat]=1,2,3
wp-json/wp/v2/posts?filter[posts_per_page]=20
wp-json/terms/category
wp-json/users/me
Przykłady
wp-json/wp/v2/posts/303
wp-json/wp/v2/posts?filter[cat]=1,2,3
wp-json/wp/v2/posts?filter[posts_per_page]=20
wp-json/terms/category
wp-json/users/me
Przykłady
wp-json/wp/v2/posts/303
wp-json/wp/v2/posts?filter[cat]=1,2,3
wp-json/wp/v2/posts?filter[posts_per_page]=20
wp-json/wp/v2/terms/category
wp-json/wp/v2/users/me
Przykłady
wp-json/wp/v2/posts/303
wp-json/wp/v2/posts?filter[cat]=1,2,3
wp-json/wp/v2/posts?filter[posts_per_page]=20
wp-json/wp/v2/terms/category
wp-json/wp/v2/users/me
Sposoby autoryzacji
Cookie Auth
• Standardowa metoda autoryzacji dla wtyczek i
motywów
• Wymaga przesłania w zapytaniu AJAX-owym
dodatkowego nagłówka X-WP-Nonce

http://wp-api.org/guides/authentication.html#cookie-authentication
Cookie Auth
• Standardowa metoda autoryzacji dla wtyczek i
motywów
• Wymaga przesłania w zapytaniu AJAX-owym
dodatkowego nagłówka X-WP-Nonce

http://v2.wp-api.org/guide/authentication/
OAuth
• Dla aplikacji zewnętrznych - webowych, mobilnych,
desktopowych
• Wymaga dodatkowego pluginu - OAuth Server

https://github.com/WP-API/OAuth1
• Wsparcie tylko dla OAuth 1.*
• Niestety obecnie nie ma UI do zarządzania
kluczami
OAuth
• Dla aplikacji zewnętrznych - webowych, mobilnych,
desktopowych
• Wymaga dodatkowego pluginu - OAuth Server

https://github.com/WP-API/OAuth1
• Wsparcie tylko dla OAuth 1.*
• Niestety obecnie nie ma UI do zarządzania
kluczami
OAuth
• Dla aplikacji zewnętrznych - webowych, mobilnych,
desktopowych
• Wymaga dodatkowego pluginu - OAuth Server

https://github.com/WP-API/OAuth1
• Wsparcie tylko dla OAuth 1.*
• Niestety obecnie nie ma UI do zarządzania
kluczami
OAuth
• Dla aplikacji zewnętrznych - webowych, mobilnych,
desktopowych
• Wymaga dodatkowego pluginu - OAuth Server

https://github.com/WP-API/OAuth1
• Wsparcie tylko dla OAuth 1.*
• Niestety obecnie nie ma UI do zarządzania
kluczami
Basic Auth
• Tylko do środowisk testowych, istnieje duże ryzyko
wycieku hasła wskutek braku szyfrowania
• Wymaga dodatkowej wtyczki: Basic Auth

https://github.com/WP-API/Basic-Auth
Basic Auth
• Tylko do środowisk testowych, istnieje duże ryzyko
wycieku hasła wskutek braku szyfrowania
• Wymaga dodatkowej wtyczki: Basic Auth

https://github.com/WP-API/Basic-Auth
Istotne zmiany pomiędzy
REST API v.1.* i v.2.*
Przestrzenie nazw
Przestrzenie nazw
Nasz motyw lub wtyczka może korzystać z własnej
przestrzeni nazw w REST API.
Tworzenie nowych endpointów API poprzez
register_rest_route wymaga zdefiniowania przestrzeni nazw.
Domyślna przestrzeń nazw to wp/v2
Przestrzenie nazw
Nasz motyw lub wtyczka może korzystać z własnej
przestrzeni nazw w REST API.
Tworzenie nowych endpointów API poprzez
register_rest_route wymaga zdefiniowania przestrzeni nazw.
Domyślna przestrzeń nazw to wp/v2
Przestrzenie nazw
Nasz motyw lub wtyczka może korzystać z własnej
przestrzeni nazw w REST API.
Tworzenie nowych endpointów API poprzez
register_rest_route wymaga zdefiniowania przestrzeni nazw.
Domyślna przestrzeń nazw to wp/v2
Implementacja HAL
Źródło: http://stateless.co/hal_specification.html
Implementacja HAL
HAL - Hypertext Application Language
Źródło: http://stateless.co/hal_specification.html
Implementacja HAL
HAL - Hypertext Application Language
Wprowadza dla zasobów kolekcje _links i _embedded
Źródło: http://stateless.co/hal_specification.html
Implementacja HAL
HAL - Hypertext Application Language
Wprowadza dla zasobów kolekcje _links i _embedded
_links zawiera adresy powiązanych zasobów
_embedded zawiera dane powiązanych zasobów
gdy dodamy w URLu &_embed
Źródło: http://stateless.co/hal_specification.html
Nowe endpointy
wp/v2/comments
wp/v2/pages
wp/v2/terms
wp/v2/types
wp/v2/statuses
Możliwości
Motywy jako SPA
Łatwa komunikacja z
aplikacjami
Migrowanie danych
Migrowanie danych
Migrowanie danych
JSON
XML
SQL
YAML
RSS
Atom
Migrowanie danych
JSON
JSON
XML
SQL
YAML
RSS
Atom
Przetwarzanie danych
Przetwarzanie danych
JSON
Przetwarzanie danych
JSON
Przetwarzanie danych
Własne endpointy
http://v2.wp-api.org/extending/adding/
Filtry i akcje
• Akcja rest_insert_post - pozwala zmodyfikować
dane przed dodaniem do bazy
• Filtr rest_prepare_{POST_TYPE} - może w
niektórych wypadkach zastąpić własne endpointy
• Akcja rest_api_init - pozwala dodawać pola i nowe
endpointy oraz np. ograniczyć zapytania do
określonej puli IP lub zarejestrowanych kluczy
• Akcja rest_insert_post - pozwala zmodyfikować
dane przed dodaniem do bazy
• Filtr rest_prepare_{POST_TYPE} - może w
niektórych wypadkach zastąpić własne endpointy
• Akcja rest_api_init - pozwala dodawać pola i nowe
endpointy oraz np. ograniczyć zapytania do
określonej puli IP lub zarejestrowanych kluczy
• Akcja rest_insert_post - pozwala zmodyfikować
dane przed dodaniem do bazy
• Filtr rest_prepare_{POST_TYPE} - może w
niektórych wypadkach zastąpić własne endpointy
• Akcja rest_api_init - pozwala dodawać pola i nowe
endpointy oraz np. ograniczyć zapytania do
określonej puli IP lub zarejestrowanych kluczy
Kilka ciekawostek
Zmiana URLa REST API
Możemy zmienić URL do API (domyślnie wp-json) poprzez filtr:
rest_url_prefix
Podstawowe informacje o stronie
Pod adresem wp-json/ znajdują się podstawowe dane witryny:
• nazwa,
• opis,
• dostępne przestrzenie nazw,
• lista endpointów
Własne metody autoryzacji
• Wymagają implementacji z użyciem filtra
rest_authentication_errors
• Można zaimplementować np. JSON Web Tokens

http://jwt.io/
Własne metody autoryzacji
• Wymagają implementacji z użyciem filtra
rest_authentication_errors
• Można zaimplementować np. JSON Web Tokens

http://jwt.io/
Zmiana klasy obsługującej API
Korzystając z filtra wp_rest_server_class możemy podmienić klasę
WP_REST_Server na własną klasę
REST API
a mobilna agenda
WordCampa
Wprowadzenie do WP-API
+
+ Raw JSON data
+ Raw JSON data
+ Raw JSON data speakers.json
presentations.json
+ Raw JSON data speakers.json
presentations.json
JSON
~320kB
JSON
~60kB
Motyw jako SPA
Motyw-mapa
Wprowadzenie do WP-API
Wprowadzenie do WP-API
Wprowadzenie do WP-API
Co wykorzystać?
REST API
Adresy URL, które wykorzystamy:
• wp-json/wp/v2/terms/category/
• wp-json/wp/v2/posts?filter[posts_per_page]=200
• wp-json/wp/v2posts?filter[posts_per_page]=200&filter[cat]=1,2,3
REST API
Adresy URL, które wykorzystamy:
• wp-json/wp/v2/terms/category/
• wp-json/wp/v2/posts?filter[posts_per_page]=200
• wp-json/wp/v2posts?filter[posts_per_page]=200&filter[cat]=1,2,3
REST API
Adresy URL, które wykorzystamy:
• wp-json/wp/v2/terms/category/
• wp-json/wp/v2/posts?filter[posts_per_page]=200
• wp-json/wp/v2posts?filter[posts_per_page]=200&filter[cat]=1,2,3
REST API
Adresy URL, które wykorzystamy:
• wp-json/wp/v2/terms/category/
• wp-json/wp/v2/posts?filter[posts_per_page]=200
• wp-json/wp/v2posts?filter[posts_per_page]=200&filter[cat]=1,2,3
Handlebars
http://handlebarsjs.com/
<script id="stats-popup-tmpl" type="text/x-handlebars-template">
<h3 class="stats__header"><?php _e('Znaleziono {{total}} odwiedzonych
miejsc', 'theme-map'); ?></h3>
<ul class="stats__list">
{{#each stats}}
<li class="stats__item">
<strong class="stats__counter{{#if count}} stats__counter--active{{/
if}}">{{count}}</strong> <img src="{{iconsUrl}}{{slug}}.svg" alt=""
class="stats__icon" /> {{name}}
</li>
{{/each}}
</ul>
</script>
Handlebars
http://handlebarsjs.com/
<script id="stats-popup-tmpl" type="text/x-handlebars-template">
<h3 class="stats__header"><?php _e('Znaleziono {{total}} odwiedzonych
miejsc', 'theme-map'); ?></h3>
<ul class="stats__list">
{{#each stats}}
<li class="stats__item">
<strong class="stats__counter{{#if count}} stats__counter--active{{/
if}}">{{count}}</strong> <img src="{{iconsUrl}}{{slug}}.svg" alt=""
class="stats__icon" /> {{name}}
</li>
{{/each}}
</ul>
</script>
Handlebars
http://handlebarsjs.com/
<script id="stats-popup-tmpl" type="text/x-handlebars-template">
<h3 class="stats__header"><?php _e('Znaleziono {{total}} odwiedzonych
miejsc', 'theme-map'); ?></h3>
<ul class="stats__list">
{{#each stats}}
<li class="stats__item">
<strong class="stats__counter{{#if count}} stats__counter--active{{/
if}}">{{count}}</strong> <img src="{{iconsUrl}}{{slug}}.svg" alt=""
class="stats__icon" /> {{name}}
</li>
{{/each}}
</ul>
</script>
Inne
Inne
• Google Maps API - bo musimy mieć jakieś mapy ;)

https://developers.google.com/maps/documentation/javascript/tutorial
• LocalStorage - do przechowywania filtrów
• History API - aby mieć dostęp poprzez URL do
konkretnych miejsc
• Snazzy maps

https://snazzymaps.com/
• Travel icon set

http://www.smashingmagazine.com/2014/12/23/freebie-tourism-travel-icon-set-100-icons-
png-svg/
Inne
• Google Maps API - bo musimy mieć jakieś mapy ;)

https://developers.google.com/maps/documentation/javascript/tutorial
• LocalStorage - do przechowywania filtrów
• History API - aby mieć dostęp poprzez URL do
konkretnych miejsc
• Snazzy maps

https://snazzymaps.com/
• Travel icon set

http://www.smashingmagazine.com/2014/12/23/freebie-tourism-travel-icon-set-100-icons-
png-svg/
Inne
• Google Maps API - bo musimy mieć jakieś mapy ;)

https://developers.google.com/maps/documentation/javascript/tutorial
• LocalStorage - do przechowywania filtrów
• History API - aby mieć dostęp poprzez URL do
konkretnych miejsc
• Snazzy maps

https://snazzymaps.com/
• Travel icon set

http://www.smashingmagazine.com/2014/12/23/freebie-tourism-travel-icon-set-100-icons-
png-svg/
Inne
• Google Maps API - bo musimy mieć jakieś mapy ;)

https://developers.google.com/maps/documentation/javascript/tutorial
• LocalStorage - do przechowywania filtrów
• History API - aby mieć dostęp poprzez URL do
konkretnych miejsc
• Snazzy maps

https://snazzymaps.com/
• Travel icon set

http://www.smashingmagazine.com/2014/12/23/freebie-tourism-travel-icon-set-100-icons-
png-svg/
Inne
• Google Maps API - bo musimy mieć jakieś mapy ;)

https://developers.google.com/maps/documentation/javascript/tutorial
• LocalStorage - do przechowywania filtrów
• History API - aby mieć dostęp poprzez URL do
konkretnych miejsc
• Snazzy maps

https://snazzymaps.com/
• Travel icon set

http://www.smashingmagazine.com/2014/12/23/freebie-tourism-travel-icon-set-100-icons-
png-svg/
Problemy?
Wprowadzanie pozycji
elementów na mapie
Wprowadzanie pozycji
elementów na mapie
Wtyczka Pronamic Google Maps

https://wordpress.org/plugins/pronamic-google-maps/
Wprowadzanie pozycji
elementów na mapie
Advanced Custom Fields

https://wordpress.org/plugins/advanced-custom-fields/
Duża liczba markerów
Duża liczba markerów
• Marker Clusterer

https://googlemaps.github.io/js-marker-clusterer/docs/examples.html
• Gorsze przypadki omówimy później ;)
Wprowadzenie do WP-API
Wpis
Dane geolokalizacyjne
Kategoria
Kategoria
Tagi
Adres
Najważniejsze pliki motywu
• index.php - jedyny plik wyświetlający szablon
• index-templates.php - przechowuje szablony
Handlebars
• functions.php - konfiguracja wstępna i wczytywanie
plików JS/CSS
Najważniejsze pliki motywu
• index.php - jedyny plik wyświetlający szablon
• index-templates.php - przechowuje szablony
Handlebars
• functions.php - konfiguracja wstępna i wczytywanie
plików JS/CSS
Najważniejsze pliki motywu
• index.php - jedyny plik wyświetlający szablon
• index-templates.php - przechowuje szablony
Handlebars
• functions.php - konfiguracja wstępna i
wczytywanie plików JS/CSS
Najważniejsze pliki motywu
• index.php - jedyny plik wyświetlający szablon
• index-templates.php - przechowuje szablony
Handlebars
• functions.php - konfiguracja wstępna i
wczytywanie plików JS/CSS
• tgm.php - do ułatwienia/wymuszenia instalacji
potrzebnych wtyczek
Wczytywanie konfiguracji wstępnej
z ekranu personalizacji motywu
wp_register_script(
'tm-app',
get_template_directory_uri() . '/js/app.js',
array('jquery', ‘tm-handlebars’)
);
$app_config = array(
'URL' => home_url(),
'mapLatitude' => get_theme_mod('map_latitude', '51.919438'),
'mapLongitude' => get_theme_mod('map_longitude', '19.145135'),
'mapZoom' => get_theme_mod('map_zoom', '6'),
);
wp_localize_script( 'tm-app', 'appConfig', $app_config );
Wczytywanie konfiguracji wstępnej
z ekranu personalizacji motywu
wp_register_script(
'tm-app',
get_template_directory_uri() . '/js/app.js',
array('jquery', ‘tm-handlebars’)
);
$app_config = array(
'URL' => home_url(),
'mapLatitude' => get_theme_mod('map_latitude', '51.919438'),
'mapLongitude' => get_theme_mod('map_longitude', '19.145135'),
'mapZoom' => get_theme_mod('map_zoom', '6'),
);
wp_localize_script( 'tm-app', 'appConfig', $app_config );
Wczytywanie konfiguracji wstępnej
z ekranu personalizacji motywu
wp_register_script(
'tm-app',
get_template_directory_uri() . '/js/app.js',
array('jquery', ‘tm-handlebars’)
);
$app_config = array(
'URL' => home_url(),
'mapLatitude' => get_theme_mod('map_latitude', '51.919438'),
'mapLongitude' => get_theme_mod('map_longitude', '19.145135'),
'mapZoom' => get_theme_mod('map_zoom', '6'),
);
wp_localize_script( 'tm-app', 'appConfig', $app_config );
Pobieranie danych
$.ajax({
url: apiUrl + “posts?filter[posts_per_page]=200"
}).done(function( data ) {
// przetwarzanie danych
});
Pobieranie danych
$.ajax({
url: apiUrl + “posts?filter[posts_per_page]=200"
}).done(function( data ) {
// przetwarzanie danych
});
Pobieranie danych
$.ajax({
url: apiUrl + “posts?filter[posts_per_page]=200"
}).done(function( data ) {
// przetwarzanie danych
});
Pobieranie danych
$.ajax({
method: ‘GET’,
url: apiUrl + “posts?filter[posts_per_page]=200"
}).done(function( data ) {
// przetwarzanie danych
});
Pobieranie danych
$.ajax({
method: ‘GET’,
cache: false,
url: apiUrl + “posts?filter[posts_per_page]=200"
}).done(function( data ) {
// przetwarzanie danych
});
Usuwanie/modyfikowanie pól z odpowiedzi
REST API jest NIEBEZPIECZNE
Lepiej stworzyć własne zoptymalizowane endpointy
w przestrzeni nazw motywu lub dodać brakujące pola
W wypadku dodawana własnych pól, warto dodać im
prefiksy celem uniknięcia konfliktów z innymi wtyczkami
i motywami modyfikującymi odpowiedzi API
np. tm_geodata
Dodawanie danych do wpisu
function PREFIX_register_FIELD_NAME() {
register_api_field('TYPE',
‘PREFIX_FIELD_NAME',
array(
'get_callback' => 'PREFIX_get_FIELD_NAME',
'update_callback' => null,
'schema' => null
)
);
}
add_action('rest_api_init', ‘PREFIX_register_FIELD_NAME');
Dodawanie danych do wpisu
function PREFIX_register_FIELD_NAME() {
register_api_field('TYPE',
‘PREFIX_FIELD_NAME',
array(
'get_callback' => 'PREFIX_get_FIELD_NAME',
'update_callback' => null,
'schema' => null
)
);
}
add_action('rest_api_init', ‘PREFIX_register_FIELD_NAME');
Dodawanie danych do wpisu
function PREFIX_register_FIELD_NAME() {
register_api_field('TYPE',
‘PREFIX_FIELD_NAME',
array(
'get_callback' => 'PREFIX_get_FIELD_NAME',
'update_callback' => null,
'schema' => null
)
);
}
add_action('rest_api_init', ‘PREFIX_register_FIELD_NAME');
Dodawanie danych do wpisu
function PREFIX_register_FIELD_NAME() {
register_api_field('TYPE',
‘PREFIX_FIELD_NAME',
array(
'get_callback' => 'PREFIX_get_FIELD_NAME',
'update_callback' => null,
'schema' => null
)
);
}
add_action('rest_api_init', ‘PREFIX_register_FIELD_NAME');
Dodawanie danych do wpisu
function tm_register_category() {
register_api_field( 'post',
'tm_category',
array(
'get_callback' => 'tm_get_category',
'update_callback' => null,
'schema' => null
)
);
}
add_action( 'rest_api_init', 'tm_register_category');
function tm_get_category( $object, $field_name, $request ) {
$category_slug = null;
$categories = get_the_category($object['id']);
if(count($categories)) {
$category_slug = $categories[0]->slug;
}
return $category_slug;
}
Dodawanie danych do wpisu
Co dalej?
1 wpis = 2-5kB
100 wpisów = ~200-500kB
1 wpis = 2-5kB
100 wpisów = ~200-500kB
Dla większej liczby
markerów
• Utworzenie własnych end-pointów do serwowania
danych markerów:
• ID,
• Dane geolokalizacyjne
• Kategoria
• Reszta danych wczytywana po kliknięciu popupa
poprzez wp-json/posts/<id>
Dla większej liczby
markerów
• Utworzenie własnych end-pointów do serwowania
danych markerów:
• ID,
• Dane geolokalizacyjne
• Kategoria
• Reszta danych wczytywana po kliknięciu popupa
poprzez wp-json/posts/<id>
Dla większej liczby
markerów
• Utworzenie własnych end-pointów do serwowania
danych markerów:
• ID,
• Dane geolokalizacyjne
• Kategoria
• Reszta danych wczytywana po kliknięciu popupa
poprzez wp-json/wp/v2/posts/<id>
Gdy mamy bardzo dużo
markerów
• Wczytywanie markerów zależnie od widocznego
obszaru mapy
• Przygotowanie end-pointu, który na bazie zakresu
szerokości i długości geograficznej zwróci listę
markerów na danym obszarze
Gdy mamy bardzo dużo
markerów
• Wczytywanie markerów zależnie od widocznego
obszaru mapy
• Przygotowanie endpointu, który na bazie zakresu
szerokości i długości geograficznej zwróci listę
markerów na danym obszarze
Kod przykładu:
https://github.com/dziudek/theme-map
Podsumowanie
Podsumowanie
• REST API tworzy zupełnie nowe obszary
wykorzystania wtyczek i motywów
• REST API jest bardzo skalowalne i edytowalne
• Trzeba pamiętać, że nie tylko my będziemy
korzystać z REST API na danej instalacji WP
Podsumowanie
• REST API tworzy zupełnie nowe obszary
wykorzystania wtyczek i motywów
• REST API jest bardzo skalowalne i edytowalne
• Trzeba pamiętać, że nie tylko my będziemy
korzystać z REST API na danej instalacji WP
Podsumowanie
• REST API tworzy zupełnie nowe obszary
wykorzystania wtyczek i motywów
• REST API jest bardzo skalowalne i edytowalne
• Trzeba pamiętać, że nie tylko my będziemy
korzystać z REST API na danej instalacji WP
Pytania?

More Related Content

PDF
WP-API - teoria i praktyka - WordUp Łódź #4
PDF
Word up warszawa 2015
PDF
Word up łódź kwiecień 2015
PDF
Statycznie czy dynamicznie?
PDF
Motywy Wordpressa Historia Prawdziwa
PDF
Electron + WordPress = ❤
PDF
Jak nadążyć za światem front-endu - WordPress Training Day
PDF
Dokąd zmierza WordPress?
WP-API - teoria i praktyka - WordUp Łódź #4
Word up warszawa 2015
Word up łódź kwiecień 2015
Statycznie czy dynamicznie?
Motywy Wordpressa Historia Prawdziwa
Electron + WordPress = ❤
Jak nadążyć za światem front-endu - WordPress Training Day
Dokąd zmierza WordPress?

What's hot (20)

PDF
WP-API - teoria i praktyka - WordUp Trójmiasto #2
PDF
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
PDF
Statycznie czy dynamicznie - infoMEET Wrocław
PDF
Jak nadążyć za światem front endu
PDF
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
PDF
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
PDF
Statycznie czy dynamicznie? v.2.0
PDF
REST API - teoria i praktyka - WordUp Trójmiasto
PPTX
Wielomilonowy ruch na wordpressie wordpress wordcamp gdynia 2016
PDF
REST API - teoria i praktyka - WordUp Warszawa
PDF
Jak Twoja strona może wygenerować niespodziewane koszta
PDF
WordUp Trójmiasto - Sage 9 w praktyce
PDF
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
PDF
WordUp Kraków - maj 2015
PDF
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
PPTX
20 Joomlasztuczek, które mogą CI się przydać
PDF
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego bloga
PPTX
Zabezpiecz swoją stronę w Joomla!
PPTX
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...
PPTX
Potęga pliku .htaccess
WP-API - teoria i praktyka - WordUp Trójmiasto #2
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Statycznie czy dynamicznie - infoMEET Wrocław
Jak nadążyć za światem front endu
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Statycznie czy dynamicznie? v.2.0
REST API - teoria i praktyka - WordUp Trójmiasto
Wielomilonowy ruch na wordpressie wordpress wordcamp gdynia 2016
REST API - teoria i praktyka - WordUp Warszawa
Jak Twoja strona może wygenerować niespodziewane koszta
WordUp Trójmiasto - Sage 9 w praktyce
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
WordUp Kraków - maj 2015
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
20 Joomlasztuczek, które mogą CI się przydać
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego bloga
Zabezpiecz swoją stronę w Joomla!
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...
Potęga pliku .htaccess
Ad

Viewers also liked (6)

PDF
WordCamp Praga 2015
PDF
Daj się wyręczyć
PDF
Webinar: 5 Tricks for WordPress web administrators
PDF
Za darmo nie umarło - WordCamp Wrocław
PDF
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
PDF
JSztuczki
WordCamp Praga 2015
Daj się wyręczyć
Webinar: 5 Tricks for WordPress web administrators
Za darmo nie umarło - WordCamp Wrocław
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
JSztuczki
Ad

Similar to Wprowadzenie do WP-API (20)

PDF
Rest API w Drupalu - działanie i definicja własnych endpointów [PL]
PDF
Budowa RESTowego api w oparciu o HATEOAS
PDF
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
PDF
JSON, REST API
PDF
Google App Engine i Google Play Services w Twoich aplikacjach
PDF
Laravel workshops 1
PDF
WordCamp Gdynia 2016
PPT
Serwer internetowy w systemie Linux
PPT
Poland - Dev Days 2005
PDF
Wtyczkowe Kompendium - WordUp Lublin
PDF
Najlepsze wtyczki WordPress, które każdy developer powinien mieć
PPTX
Testowanie na 101 sposobów
PDF
Lionframe - Rapid RESTful API development
PDF
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...
PDF
Functional widgets in Rails
PPTX
Android i REST
PDF
Wtyczki WordPress, których każdy developer powinien używać
PPTX
Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...
PDF
NK API - Przykłady
PDF
Apache http server - proste i zaawansowane przypadki użycia
Rest API w Drupalu - działanie i definicja własnych endpointów [PL]
Budowa RESTowego api w oparciu o HATEOAS
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
JSON, REST API
Google App Engine i Google Play Services w Twoich aplikacjach
Laravel workshops 1
WordCamp Gdynia 2016
Serwer internetowy w systemie Linux
Poland - Dev Days 2005
Wtyczkowe Kompendium - WordUp Lublin
Najlepsze wtyczki WordPress, które każdy developer powinien mieć
Testowanie na 101 sposobów
Lionframe - Rapid RESTful API development
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...
Functional widgets in Rails
Android i REST
Wtyczki WordPress, których każdy developer powinien używać
Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...
NK API - Przykłady
Apache http server - proste i zaawansowane przypadki użycia

More from Tomasz Dziuda (9)

PDF
Wtyczkowe kompendium - WordUp Warszawa
PDF
Wtyczkowe Kompendium - WordUp Łódź #12
PDF
Trello w praktyce
PDF
Wtyczkowe kompendium
PDF
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
PDF
Jak nadążyć za światem front-endu?
PDF
WordUp Wrocław #3 2015
PDF
Jak tworzyć motywy przyjazne użytkownikom i programistom?
PDF
Introduction to ECMAScript 2015
Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe Kompendium - WordUp Łódź #12
Trello w praktyce
Wtyczkowe kompendium
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak nadążyć za światem front-endu?
WordUp Wrocław #3 2015
Jak tworzyć motywy przyjazne użytkownikom i programistom?
Introduction to ECMAScript 2015

Wprowadzenie do WP-API