odczarowujemy wp rewrite · add rewrite endpoint() add feed() krzysiek dróżd ż...

Post on 16-Jun-2020

9 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Odczarowujemy WP Rewrite

Krzysiek Dróżdżkrzysiek@wpmagus.pl

WPmagus.pl

Wrocław, 27 czerwca 2013

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Kto z Was. . . ?

. . . słyszał?

. . . korzystał?

. . . miał problemy?

. . . używa często?

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Kto z Was. . . ?

. . . słyszał?

. . . korzystał?

. . . miał problemy?

. . . używa często?

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Kto z Was. . . ?

. . . słyszał?

. . . korzystał?

. . . miał problemy?

. . . używa często?

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Kto z Was. . . ?

. . . słyszał?

. . . korzystał?

. . . miał problemy?

. . . używa często?

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Kto z Was. . . ?

. . . słyszał?

. . . korzystał?

. . . miał problemy?

. . . używa często?

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Czym jest WP Rewrite

WP Rewrite:

to klasa WordPressa

odpowiada za obsługę przyjaznych linków

przechowuje ustawienia w bazie

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Funkcje związane z WP Rewrite

add rewrite rule()

flush rewrite rules()

add rewrite tag()

add permastruct()

add rewrite endpoint()

add feed()

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

add rewrite rule()

Pozwala dodać własne reguły.

Za pomocą wyrażeń regularnych definiujemy, jak sparsowaćprzyjazny link i na jego podstawie wyliczyć parametry requestu.

Przykład

Sprawi, że obsługiwane zaczną być adresystrona.pl/nutrition/milkshakes/vanilla. Takie requestybędą przekierowane na stronę o ID=12.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

flush rewrite rules()

Służy do odświeżania rewrite rulesów

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Jak to się układa w czasie?

do action(plugins loaded)

utworzenie globalnej zmiennej wp rewrite

do action(setup theme)

do action(after setup theme)

do action(init)

do action(wp loaded)

parsowanie requestu

wysłanie nagłówków

wykonanie głównego WP Query

do action ref array(wp)

apply filters(template include)

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Kilka faktów o rewrite rulesach

są generowane na podstawie permastructów i endpointów

są cache’owane i zapamiętywane w bazie(opcja rewrite rules)

są wyrażeniami regularnymi

odpowiadają za parsowanie requestu i wyliczenierewrite tagów

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Wyświetl wszystkie reguły

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Dowiedzmy się, co wiemyCzego dowiemy się z CodexuCzego dowiemy się z kodu WPPrzydatne przy debuggowaniu

Wyświetl użytą/dopasowaną regułę

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Zdarzyło się każdemu. . . ?

Tworzymy własny typ wpisu za pomocą zgodnie z przykłademz Codex

Dodajemy wpis, publikujemy i chcemy go zobaczyć (lubodwiedzamy stronę archiwum tego typu wpisu)

Widzimy 404

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Co się wtedy zazwyczaj robi?

Szuka w Google

Trafia na informację, że trzeba sflushować rewrite rulesy

. . . i że wystarczy w tym celu zapisać ustawieniabezpośrednich odnośników

Ale to niezbyt dobre rozwiązanie!

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Co się wtedy zazwyczaj robi?

Szuka w Google

Trafia na informację, że trzeba sflushować rewrite rulesy

. . . i że wystarczy w tym celu zapisać ustawieniabezpośrednich odnośników

Ale to niezbyt dobre rozwiązanie!

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Z czego wynika problem?

Rejestracja CPT powoduje utworzenie nowego permastructa

. . . Ale nie generuje rewrite rulesów

Zatem WordPress nie rozpoznaje tego formatu adresu URL

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Z czego wynika problem?

Rejestracja CPT powoduje utworzenie nowego permastructa

. . . Ale nie generuje rewrite rulesów

Zatem WordPress nie rozpoznaje tego formatu adresu URL

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Co zatem zrobić?

Sflushować rewrite rulesy ;)

czyli wywołać funkcję flush rewrite rules

Zatem dodajemy wywołanie tej funkcji zaraz pod kodemrejestrującym CPT i wszystko zaczyna działać.

I tak się zazwyczaj kończy. . .

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Co zatem zrobić?

Sflushować rewrite rulesy ;)

czyli wywołać funkcję flush rewrite rules

Zatem dodajemy wywołanie tej funkcji zaraz pod kodemrejestrującym CPT i wszystko zaczyna działać.

I tak się zazwyczaj kończy. . .

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Co zatem zrobić?

Sflushować rewrite rulesy ;)

czyli wywołać funkcję flush rewrite rules

Zatem dodajemy wywołanie tej funkcji zaraz pod kodemrejestrującym CPT i wszystko zaczyna działać.

I tak się zazwyczaj kończy. . .

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Jak zatem zrobić to poprawnie?

WordPress nie robi tego automatycznie po dodaniupermastructa, bo. . .

wygenerowanie rewrite rulesów jest czasochłonne

i powoduje zapis do bazy danych

Czyli nie chcemy tego robić podczas każdej odsłony strony.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Jak zatem zrobić to poprawnie?

WordPress nie robi tego automatycznie po dodaniupermastructa, bo. . .

wygenerowanie rewrite rulesów jest czasochłonne

i powoduje zapis do bazy danych

Czyli nie chcemy tego robić podczas każdej odsłony strony.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Jak zatem zrobić to poprawnie?

WordPress nie robi tego automatycznie po dodaniupermastructa, bo. . .

wygenerowanie rewrite rulesów jest czasochłonne

i powoduje zapis do bazy danych

Czyli nie chcemy tego robić podczas każdej odsłony strony.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

To co teraz?

Musimy wywołać flush rewrite rules w odpowienim momenciei tylko raz (wtedy, gdy coś zmieniamy).

w motywie wykorzystajmy after switch theme

we wtyczce - activation hook i deactivation hook

To wystarczy w większości wypadków.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

To co teraz?

Musimy wywołać flush rewrite rules w odpowienim momenciei tylko raz (wtedy, gdy coś zmieniamy).

w motywie wykorzystajmy after switch theme

we wtyczce - activation hook i deactivation hook

To wystarczy w większości wypadków.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Kto pierwszy ten lepszy

Jeśli Twoja reguła powinna zostać dopasowana do adresu strony,ale tak nie jest, to pamiętaj, że reguły dopasowywane są po kolei.Możliwe, że jakaś reguła, która jest wyżej od Twojej, została jużdopasowana.

Tutaj przydają się funkcje, które wcześniej pokazałem.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Kto pierwszy ten lepszy

Jeśli Twoja reguła powinna zostać dopasowana do adresu strony,ale tak nie jest, to pamiętaj, że reguły dopasowywane są po kolei.Możliwe, że jakaś reguła, która jest wyżej od Twojej, została jużdopasowana.

Tutaj przydają się funkcje, które wcześniej pokazałem.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Trochę nieszkodliwego zamieszania

Dlaczego działają:strona.pl/testowa-strona i strona.pl/TeStoWa-StrONaorazstrona.pl/category/testowa-kategoria istrona.pl/category/tEsTOwA-kAteGoRiA a nie działają:strona.pl/Feed i strona.pl/Category?

Bo:Rewrite rulesy są dopasowywane za pomocą wyrażeńregularnych, które zwracają uwagę na rozmiar znaków. Jednakbardzo często rewrite tagi nie są specjalnie walidowane iprzyjmują także wielkie litery.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Trochę nieszkodliwego zamieszania

Dlaczego działają:strona.pl/testowa-strona i strona.pl/TeStoWa-StrONaorazstrona.pl/category/testowa-kategoria istrona.pl/category/tEsTOwA-kAteGoRiA a nie działają:strona.pl/Feed i strona.pl/Category?

Bo:Rewrite rulesy są dopasowywane za pomocą wyrażeńregularnych, które zwracają uwagę na rozmiar znaków. Jednakbardzo często rewrite tagi nie są specjalnie walidowane iprzyjmują także wielkie litery.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Na przykład zmieniamy strukturę URLi kategorii

Czyli mamy:strona.pl/category/ciekawe,a chcemy mieć:strona.pl/blog/ciekawe

Pytamy się na forum lub FB jak to zrobić

i otrzymujemy odpowiedź, że wystarczy dodać regułęmod rewrite do pliku .htaccess

Dodajemy. Sprawdzamy, że nowy format URL działa izadowoleni zamykamy temat

Ale to nie jest rozwiązanie, bo np. funkcja get category linknadal będzie generować standardowe URLe.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Na przykład zmieniamy strukturę URLi kategorii

Czyli mamy:strona.pl/category/ciekawe,a chcemy mieć:strona.pl/blog/ciekawe

Pytamy się na forum lub FB jak to zrobić

i otrzymujemy odpowiedź, że wystarczy dodać regułęmod rewrite do pliku .htaccess

Dodajemy. Sprawdzamy, że nowy format URL działa izadowoleni zamykamy temat

Ale to nie jest rozwiązanie, bo np. funkcja get category linknadal będzie generować standardowe URLe.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Na przykład zmieniamy strukturę URLi kategorii

Czyli mamy:strona.pl/category/ciekawe,a chcemy mieć:strona.pl/blog/ciekawe

Pytamy się na forum lub FB jak to zrobić

i otrzymujemy odpowiedź, że wystarczy dodać regułęmod rewrite do pliku .htaccess

Dodajemy. Sprawdzamy, że nowy format URL działa izadowoleni zamykamy temat

Ale to nie jest rozwiązanie, bo np. funkcja get category linknadal będzie generować standardowe URLe.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Na przykład zmieniamy strukturę URLi kategorii

Czyli mamy:strona.pl/category/ciekawe,a chcemy mieć:strona.pl/blog/ciekawe

Pytamy się na forum lub FB jak to zrobić

i otrzymujemy odpowiedź, że wystarczy dodać regułęmod rewrite do pliku .htaccess

Dodajemy. Sprawdzamy, że nowy format URL działa izadowoleni zamykamy temat

Ale to nie jest rozwiązanie

, bo np. funkcja get category linknadal będzie generować standardowe URLe.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Niedziałające CPT/taksonomieZbyt częste flushowanieZła kolejność regułCase sensitive?Przekierowanie to nie wszystko

Na przykład zmieniamy strukturę URLi kategorii

Czyli mamy:strona.pl/category/ciekawe,a chcemy mieć:strona.pl/blog/ciekawe

Pytamy się na forum lub FB jak to zrobić

i otrzymujemy odpowiedź, że wystarczy dodać regułęmod rewrite do pliku .htaccess

Dodajemy. Sprawdzamy, że nowy format URL działa izadowoleni zamykamy temat

Ale to nie jest rozwiązanie, bo np. funkcja get category linknadal będzie generować standardowe URLe.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Stronicowanie zamiast paginacjiSztuczna strona, której nie maWbudowanie własnego kodu w WP

Zamieniamy page na strona

Problem

Chcemy sprawić, aby paginacja używała słowa strona zamiast page.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Stronicowanie zamiast paginacjiSztuczna strona, której nie maWbudowanie własnego kodu w WP

Zamieniamy page na strona

Problem

Chcemy sprawić, aby paginacja używała słowa strona zamiast page.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Stronicowanie zamiast paginacjiSztuczna strona, której nie maWbudowanie własnego kodu w WP

Koszyk, logowanie, itp.

Problem

Chcemy dodać dynamicznie generowaną stronę, która będzieudawała zwykłą stronę, ale nie będzie można jej edytować.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Stronicowanie zamiast paginacjiSztuczna strona, której nie maWbudowanie własnego kodu w WP

Koszyk, logowanie, itp.

Problem

Chcemy dodać dynamicznie generowaną stronę, która będzieudawała zwykłą stronę, ale nie będzie można jej edytować.

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Stronicowanie zamiast paginacjiSztuczna strona, której nie maWbudowanie własnego kodu w WP

A jeśli chcemy podpiąć coś większego?

Problem

Łączymy własny kod PHP (ale nie tylko) z WordPressem.

A w pliku /core/ogloszenia.php

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Stronicowanie zamiast paginacjiSztuczna strona, której nie maWbudowanie własnego kodu w WP

A jeśli chcemy podpiąć coś większego?

Problem

Łączymy własny kod PHP (ale nie tylko) z WordPressem.

A w pliku /core/ogloszenia.php

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Stronicowanie zamiast paginacjiSztuczna strona, której nie maWbudowanie własnego kodu w WP

A jeśli chcemy podpiąć coś większego?

Problem

Łączymy własny kod PHP (ale nie tylko) z WordPressem.

A w pliku /core/ogloszenia.php

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

WstępCzęste problemy i błędy

Co można z tym w ogóle zrobić?

Stronicowanie zamiast paginacjiSztuczna strona, której nie maWbudowanie własnego kodu w WP

Dziękuję za uwagę!

Krzysiek Dróżdżkrzysiek@wpmagus.pl

Krzysiek Dróżdż krzysiek@wpmagus.pl Odczarowujemy WP Rewrite

top related