SlideShare a Scribd company logo
1 of 143
Download to read offline
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
+
+ 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
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 ;)
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

What's hot

WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2Tomasz Dziuda
 
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp WarszawaMotywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp WarszawaTomasz Dziuda
 
Statycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET WrocławStatycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET WrocławTomasz Dziuda
 
Jak nadążyć za światem front endu
Jak nadążyć za światem front enduJak nadążyć za światem front endu
Jak nadążyć za światem front enduTomasz Dziuda
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaTomasz Dziuda
 
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywówContributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywówTomasz Dziuda
 
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Tomasz Dziuda
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoTomasz Dziuda
 
Wielomilonowy ruch na wordpressie wordpress wordcamp gdynia 2016
Wielomilonowy ruch na wordpressie   wordpress wordcamp gdynia 2016Wielomilonowy ruch na wordpressie   wordpress wordcamp gdynia 2016
Wielomilonowy ruch na wordpressie wordpress wordcamp gdynia 2016Lukasz Wilczak
 
REST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaREST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaTomasz Dziuda
 
Jak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane kosztaJak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane kosztaTomasz Dziuda
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceDawid Urbański
 
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceMotywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceTomasz Dziuda
 
WordUp Kraków - maj 2015
WordUp Kraków - maj 2015WordUp Kraków - maj 2015
WordUp Kraków - maj 2015Tomasz Dziuda
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomTomasz Dziuda
 
20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydać20 Joomlasztuczek, które mogą CI się przydać
20 Joomlasztuczek, które mogą CI się przydaćWojciech Klocek
 
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego bloga
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego blogaUnikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego bloga
Unikaj falstartów - o czym warto pamiętać przed uruchomieniem nowego blogaBartosz Romanowski
 
Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Wojciech Klocek
 
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...
Bezpieczna i szybka strona statyczna  z funkcjonalnością Wordpressa. Czy to m...Bezpieczna i szybka strona statyczna  z funkcjonalnością Wordpressa. Czy to m...
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...Lukasz Wilczak
 

What's hot (20)

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

Viewers also liked

Webinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administratorsWebinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administratorsTomasz Dziuda
 
Za darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp WrocławZa darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp WrocławTomasz Dziuda
 
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
Wordpress - czyli ponad 17% wszystkich istniejących serwisów wwwWordpress - czyli ponad 17% wszystkich istniejących serwisów www
Wordpress - czyli ponad 17% wszystkich istniejących serwisów wwwB-MIND Software House
 

Viewers also liked (6)

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

Similar to Wprowadzenie do WP-API

Rest API w Drupalu - działanie i definicja własnych endpointów [PL]
Rest API w Drupalu - działanie i definicja własnych endpointów [PL]Rest API w Drupalu - działanie i definicja własnych endpointów [PL]
Rest API w Drupalu - działanie i definicja własnych endpointów [PL]Droptica
 
Budowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASBudowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASMateusz Stępniak
 
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Mateusz Stępniak
 
JSON, REST API
JSON, REST APIJSON, REST API
JSON, REST API3camp
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach3camp
 
Laravel workshops 1
Laravel workshops 1Laravel workshops 1
Laravel workshops 1Kamil Fojuth
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linuxbm9ib2r5
 
Poland - Dev Days 2005
Poland - Dev Days 2005Poland - Dev Days 2005
Poland - Dev Days 2005Tomasz Cieplak
 
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinTomasz Dziuda
 
Najlepsze wtyczki WordPress, które każdy developer powinien mieć
Najlepsze wtyczki WordPress, które każdy developer powinien miećNajlepsze wtyczki WordPress, które każdy developer powinien mieć
Najlepsze wtyczki WordPress, które każdy developer powinien miećMaciej Swoboda
 
Lionframe - Rapid RESTful API development
Lionframe - Rapid RESTful API developmentLionframe - Rapid RESTful API development
Lionframe - Rapid RESTful API developmentMichał Marcinkowski
 
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...
Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisan...Kainos Polska
 
Functional widgets in Rails
Functional widgets in RailsFunctional widgets in Rails
Functional widgets in RailsSebastian Sito
 
Wtyczki WordPress, których każdy developer powinien używać
Wtyczki WordPress, których każdy developer powinien używaćWtyczki WordPress, których każdy developer powinien używać
Wtyczki WordPress, których każdy developer powinien używaćMaciej Swoboda
 
Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...
Mts 2013   tomasz kopacz - windows 8, office 365, workflow manager, windows a...Mts 2013   tomasz kopacz - windows 8, office 365, workflow manager, windows a...
Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...Tomasz Kopacz
 
NK API - Przykłady
NK API - PrzykładyNK API - Przykłady
NK API - Przykładynasza-klasa
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaWojciech Lichota
 

Similar to Wprowadzenie do WP-API (20)

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

More from Tomasz Dziuda

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

More from Tomasz Dziuda (9)

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

Wprowadzenie do WP-API