9. Warto zapamiętać
• Stworzenie pierwszego motywu dla szerokiego
grona użytkowników nie jest wcale takie proste
• Kolejne motywy prawie zawsze bazują na
fragmentach kodu poprzednich motywów
• Swoją przygodę z motywami warto zacząć od
stworzenia motywu potomnego...
• ... lub skorzystać z frameworka takiego jak _s
10. Warto zapamiętać
• Stworzenie pierwszego motywu dla szerokiego
grona użytkowników nie jest wcale takie proste
• Kolejne motywy prawie zawsze bazują na
fragmentach kodu poprzednich motywów
• Swoją przygodę z motywami warto zacząć od
stworzenia motywu potomnego...
• ... lub skorzystać z frameworka takiego jak _s
11. Warto zapamiętać
• Stworzenie pierwszego motywu dla szerokiego
grona użytkowników nie jest wcale takie proste
• Kolejne motywy prawie zawsze bazują na
fragmentach kodu poprzednich motywów
• Swoją przygodę z motywami warto zacząć od
stworzenia motywu potomnego...
• ... lub skorzystać z frameworka takiego jak _s
12. Warto zapamiętać
• Stworzenie pierwszego motywu dla szerokiego
grona użytkowników nie jest wcale takie proste
• Kolejne motywy prawie zawsze bazują na
fragmentach kodu poprzednich motywów
• Swoją przygodę z motywami warto zacząć od
stworzenia motywu potomnego...
• ... lub skorzystać z frameworka takiego jak _s
15. • Lista testów każdego elementu strony stale się
wydłuża (różne przeglądarki, responsywność,
dostępność)
• Bardziej złożone motywy mają więcej kombinacji i
zależności pomiędzy poszczególnymi
komponentami
• Nie wiadomo czy motyw się przyjmie na rynku
• Twój motyw nie musi być od razu doskonały
16. • Lista testów każdego elementu strony stale się
wydłuża (różne przeglądarki, responsywność,
dostępność)
• Bardziej złożone motywy mają więcej kombinacji i
zależności pomiędzy poszczególnymi
komponentami
• Nie wiadomo czy motyw się przyjmie na rynku
• Twój motyw nie musi być od razu doskonały
17. • Lista testów każdego elementu strony stale się
wydłuża (różne przeglądarki, responsywność,
dostępność)
• Bardziej złożone motywy mają więcej kombinacji i
zależności pomiędzy poszczególnymi
komponentami
• Nie wiadomo czy motyw się przyjmie na rynku
• Twój motyw nie musi być od razu doskonały
18. • Lista testów każdego elementu strony stale się
wydłuża (różne przeglądarki, responsywność,
dostępność)
• Bardziej złożone motywy mają więcej kombinacji i
zależności pomiędzy poszczególnymi
komponentami
• Nie wiadomo czy motyw się przyjmie na rynku
• Twój motyw nie musi być od razu doskonały
22. Kilka obserwacji dot. rynku
motywów
• Najładniejsze motywy wcale nie sprzedają się
najlepiej
• Wsparcie dla popularnych rozszerzeń typu
WooCommerce jest bardzo pożądane
• Niszowe tematy przewodnie mogą okazać się
dużym niewypałem
23. Kilka obserwacji dot. rynku
motywów
• Najładniejsze motywy wcale nie sprzedają się
najlepiej
• Wsparcie dla popularnych rozszerzeń typu
WooCommerce jest bardzo pożądane
• Niszowe tematy przewodnie mogą okazać się
dużym niewypałem
24. Kilka obserwacji dot. rynku
motywów
• Najładniejsze motywy wcale nie sprzedają się
najlepiej
• Wsparcie dla popularnych rozszerzeń typu
WooCommerce jest bardzo pożądane
• Niszowe tematy motywów mogą okazać się dużym
niewypałem
28. Zalety
• Pozwala od razu zobaczyć efekty naniesionych
zmian
• Jego budowa wymusza tworzenie prostych paneli
zarządzania motywami
• Wspomaga testowanie opcji na etapie budowy
motywu
• Ten sam UI dla opcji wszystkich motywów
29. Zalety
• Pozwala od razu zobaczyć efekty naniesionych
zmian
• Jego budowa wymusza tworzenie prostych paneli
zarządzania motywami
• Wspomaga testowanie opcji na etapie budowy
motywu
• Ten sam UI dla opcji wszystkich motywów
30. Zalety
• Pozwala od razu zobaczyć efekty naniesionych
zmian
• Jego budowa wymusza tworzenie prostych paneli
zarządzania motywami
• Wspomaga testowanie opcji na etapie budowy
motywu
• Ten sam UI dla opcji wszystkich motywów
31. Zalety
• Pozwala od razu zobaczyć efekty naniesionych
zmian
• Jego budowa wymusza tworzenie prostych paneli
zarządzania motywami
• Wspomaga testowanie opcji na etapie budowy
motywu
• Ten sam UI dla opcji wszystkich motywów
33. Wady
• Wymusza na nas zmianę pewnych koncepcji,
zwłaszcza tych związanych z rozbudowanym UI
• Jest i będzie dość często zmieniany jego UI co
czasem dokłada pracy np. przy animacjach
• Niektóre funkcje jak np. active_callback są mało
intuicyjne dla początkujących użytkowników
34. Wady
• Wymusza na nas zmianę pewnych koncepcji,
zwłaszcza tych związanych z rozbudowanym UI
• Jest i będzie dość często zmieniany jego UI co
czasem dokłada pracy np. przy animacjach
• Niektóre funkcje jak np. active_callback są mało
intuicyjne dla początkujących użytkowników
35. Wady
• Wymusza na nas zmianę pewnych koncepcji,
zwłaszcza tych związanych z rozbudowanym UI
• Jest i będzie dość często zmieniany jego UI co
czasem dokłada pracy np. przy animacjach
• Niektóre funkcje jak np. active_callback są mało
intuicyjne dla początkujących użytkowników
46. Dedykowany instalator
WordPressa
• Na ThemeForest / oficjalne repozytorium można
umieścić tylko paczkę z motywem
• Użytkownik często ma już istniejącą stronę na
której chce zmienić motyw
• Dużo hostingów posiada własne auto-instalatory
WordPressa
47. Dedykowany instalator
WordPressa
• Na ThemeForest / oficjalne repozytorium można
umieścić tylko paczkę z motywem
• Użytkownik często ma już istniejącą stronę na
której chce zmienić motyw
• Dużo hostingów posiada własne auto-instalatory
WordPressa
48. Dedykowany instalator
WordPressa
• Na ThemeForest / oficjalne repozytorium można
umieścić tylko paczkę z motywem
• Użytkownik często ma już istniejącą stronę na
której chce zmienić motyw
• Dużo hostingów posiada własne auto-instalatory
WordPressa
50. WXR
• Łatwa migracja postów i podstron
• Brak możliwości migracji widżetów
• Należy zadbać o domyślną konfigurację motywu
(WXR jej nie przenosi)
• Najlepiej strukturę strony oprzeć na podstronach i
umieścić w nich widżety w postaci shortcode'ów
51. WXR
• Łatwa migracja postów i podstron
• Brak możliwości migracji widżetów
• Należy zadbać o domyślną konfigurację motywu
(WXR jej nie przenosi)
• Najlepiej strukturę strony oprzeć na podstronach i
umieścić w nich widżety w postaci shortcode'ów
52. WXR
• Łatwa migracja postów i podstron
• Brak możliwości migracji widżetów
• Należy zadbać o domyślną konfigurację motywu
(WXR jej nie przenosi)
• Najlepiej strukturę strony oprzeć na podstronach i
umieścić w nich widżety w postaci shortcode'ów
53. WXR
• Łatwa migracja postów i podstron
• Brak możliwości migracji widżetów
• Należy zadbać o domyślną konfigurację motywu
(WXR jej nie przenosi)
• Najlepiej strukturę strony oprzeć na podstronach i
umieścić w nich widżety w postaci shortcode'ów
55. Dedykowane rozwiązania
• Możliwość migracji dowolnych danych
• Należy uwzględnić fakt, że użytkownik może mieć
własne treści na stronie
• Możliwość przeniesienia konfiguracji widżetów i
motywu
• Częściowe przenosiny danych (np. konfiguracji
widżetów bez treści demo) jest problematyczne
56. Dedykowane rozwiązania
• Możliwość migracji dowolnych danych
• Należy uwzględnić fakt, że użytkownik może mieć
własne treści na stronie
• Możliwość przeniesienia konfiguracji widżetów i
motywu
• Częściowe przenosiny danych (np. konfiguracji
widżetów bez treści demo) jest problematyczne
57. Dedykowane rozwiązania
• Możliwość migracji dowolnych danych
• Należy uwzględnić fakt, że użytkownik może mieć
własne treści na stronie
• Możliwość przeniesienia konfiguracji widżetów i
motywu
• Częściowe przenosiny danych (np. konfiguracji
widżetów bez treści demo) jest problematyczne
58. Dedykowane rozwiązania
• Możliwość migracji dowolnych danych
• Należy uwzględnić fakt, że użytkownik może mieć
własne treści na stronie
• Możliwość przeniesienia konfiguracji widżetów i
motywu
• Częściowe przenosiny danych (np. konfiguracji
widżetów bez treści demo) jest problematyczne
60. Slideshow pokazujący wpisy
z danego tagu
Źródło: https://codex.wordpress.org/Twenty_Fourteen
Należy zadbać o to by można było zmienić nazwę tagu
wybieranego do slideshow
62. Zaawansowane wykorzystanie
hierarchii szablonów w WordPressie
• Mocno ryzykowne jest tworzenie plików typu
category-slug.php
• Tak samo ciężko będzie stworzyć dedykowane
podstrony dla konkretnych typów wpisów (gdy
mają zmienne nazwy)
63. Zaawansowane wykorzystanie
hierarchii szablonów w WordPressie
• Mocno ryzykowne jest tworzenie plików typu
category-slug.php
• Tak samo ciężko będzie stworzyć dedykowane
podstrony dla konkretnych typów wpisów (gdy
mają zmienne nazwy)
65. • Przygotuj siebie (i swój support) na to, że mało kto ją
przeczyta ;)
• Nastaw się, że trafisz na wielu klientów, którzy
WordPressa widzą drugi raz na oczy
• Twórz kod, który nie wymaga zbyt wiele dodatkowych
komentarzy
• Korzystaj w miarę możliwości z rozwiązań dostępnych w
czystym WordPressie
• Im mniej dodatkowych wtyczek tym lepiej dla Ciebie i
Twojego użytkownika
66. • Przygotuj siebie (i swój support) na to, że mało kto ją
przeczyta ;)
• Nastaw się, że trafisz na wielu klientów, którzy
WordPressa widzą drugi raz na oczy
• Twórz kod, który nie wymaga zbyt wiele dodatkowych
komentarzy
• Korzystaj w miarę możliwości z rozwiązań dostępnych w
czystym WordPressie
• Im mniej dodatkowych wtyczek tym lepiej dla Ciebie i
Twojego użytkownika
67. • Przygotuj siebie (i swój support) na to, że mało kto ją
przeczyta ;)
• Nastaw się, że trafisz na wielu klientów, którzy
WordPressa widzą drugi raz na oczy
• Twórz kod, który nie wymaga zbyt wiele dodatkowych
komentarzy
• Korzystaj w miarę możliwości z rozwiązań dostępnych w
czystym WordPressie
• Im mniej dodatkowych wtyczek tym lepiej dla Ciebie i
Twojego użytkownika
68. • Przygotuj siebie (i swój support) na to, że mało kto ją
przeczyta ;)
• Nastaw się, że trafisz na wielu klientów, którzy
WordPressa widzą drugi raz na oczy
• Twórz kod, który nie wymaga zbyt wiele dodatkowych
komentarzy
• Stopniowy rozwój motywu wspomaga tworzenie
dokumentacji
• Im mniej dodatkowych wtyczek tym lepiej dla Ciebie i
Twojego użytkownika
69. • Przygotuj siebie (i swój support) na to, że mało kto ją
przeczyta ;)
• Nastaw się, że trafisz na wielu klientów, którzy
WordPressa widzą drugi raz na oczy
• Twórz kod, który nie wymaga zbyt wiele dodatkowych
komentarzy
• Stopniowy rozwój motywu wspomaga tworzenie
dokumentacji
• Im mniej dodatkowych wtyczek tym lepiej dla Ciebie i
Twojego użytkownika
73. • W functions.php używamy function_exists
• Tworzymy dający się nadpisać kod CSS
• Gdy użytkownik chce zmodyfikować nasz motyw,
warto mu przypomnieć by zrobił to poprzez motyw
potomny albo np. Custom CSS z JetPacka
74. • W functions.php używamy function_exists
• Tworzymy dający się nadpisać kod CSS
• Gdy użytkownik chce zmodyfikować nasz motyw,
warto mu przypomnieć by zrobił to poprzez motyw
potomny albo np. Custom CSS z JetPacka
75. • W functions.php używamy function_exists
• Tworzymy dający się nadpisać kod CSS
• Gdy użytkownik chce zmodyfikować nasz motyw,
warto mu przypomnieć by zrobił to poprzez motyw
potomny albo np. Custom CSS z JetPacka
79. Porządek w plikach
• Warto podzielić plik CSS na sekcje lub na kilka
plików (minifakcja i tak je połączy)
• Tworzymy katalogi na pliki CSS, JS, grafiki, fonty
• Biblioteki JS i CSS warto od razu udostępnić w
wersji zminifikowanej z *.min.* w nazwie
• W wypadku pluginów warto dodawać na końcu
nazwę frameworka jakiego używają np. *.jquery.js
80. Porządek w plikach
• Warto podzielić plik CSS na sekcje lub na kilka
plików (minifakcja i tak je połączy)
• Tworzymy katalogi na pliki CSS, JS, grafiki, fonty
• Biblioteki JS i CSS warto od razu udostępnić w
wersji zminifikowanej z *.min.* w nazwie
• W wypadku pluginów warto dodawać na końcu
nazwę frameworka jakiego używają np. *.jquery.js
81. Porządek w plikach
• Warto podzielić plik CSS na sekcje lub na kilka
plików (minifakcja i tak je połączy)
• Tworzymy katalogi na pliki CSS, JS, grafiki, fonty
• Biblioteki JS i CSS warto od razu udostępnić w
wersji zminifikowanej z *.min.* w nazwie
• W wypadku pluginów warto dodawać na końcu
nazwę frameworka jakiego używają np. *.jquery.js
82. Porządek w plikach
• Warto podzielić plik CSS na sekcje lub na kilka
plików (minifakcja i tak je połączy)
• Tworzymy katalogi na pliki CSS, JS, grafiki, fonty
• Biblioteki JS i CSS warto od razu udostępnić w
wersji zminifikowanej z *.min.* w nazwie
• W wypadku pluginów warto dodawać na końcu
nazwę frameworka jakiego używają np. *.jquery.js
84. get_template_part
• Reużycie istniejących fragmentów kodu
• Podzielenie dużych fragmentów kodu na mniejsze
części
• get_template_part($slug, $name) wczyta plik
{$slug}-{$name}.php
85. get_template_part
• Reużycie istniejących fragmentów kodu
• Podzielenie dużych fragmentów kodu na mniejsze
części
• get_template_part($slug, $name) wczyta plik
{$slug}-{$name}.php
86. get_template_part
• Reużycie istniejących fragmentów kodu
• Podzielenie dużych fragmentów kodu na mniejsze
części
• get_template_part($slug, $name) wczyta plik
{$slug}-{$name}.php
87. get_template_part
• Reużycie istniejących fragmentów kodu
• Podzielenie dużych fragmentów kodu na mniejsze
części
• get_template_part($slug, $name) wczyta plik
{$slug}-{$name}.php
• Pozwala łatwo nadpisać pliki w motywie potomnym
90. LESS/SASS
• Zmienne pozwalają zmieniać szybko podstawowe
parametry strony
• Zagnieżdżone selektory wymuszają wręcz
uporządkowanie struktury kodu
• Dobrze współpracują z BEM
• Wtyczka WP LESS sprawia, że Gulp jest
niepotrzebny ;)
91. LESS/SASS
• Zmienne pozwalają zmieniać szybko podstawowe
parametry strony
• Zagnieżdżone selektory wymuszają wręcz
uporządkowanie struktury kodu
• Dobrze współpracują z BEM
• Wtyczka WP LESS sprawia, że Gulp jest
niepotrzebny ;)
92. LESS/SASS
• Zmienne pozwalają zmieniać szybko podstawowe
parametry strony
• Zagnieżdżone selektory wymuszają wręcz
uporządkowanie struktury kodu
• Dobrze współpracują z BEM
• Wtyczka WP LESS sprawia, że Gulp jest
niepotrzebny ;)
93. LESS/SASS
• Zmienne pozwalają zmieniać szybko podstawowe
parametry strony
• Zagnieżdżone selektory wymuszają wręcz
uporządkowanie struktury kodu
• Dobrze współpracują z BEM
• Wtyczka WP LESS sprawia, że Grunt/Gulp jest
niepotrzebny ;)
95. Korzystanie z dostępnych API
• Oszczędność naszego czasu
• Oszczędność czasu innych programistów (nie
muszą się uczyć naszego rozwiązania)
• Bezpieczniejszy i lepiej przetestowany kod
96. Korzystanie z dostępnych API
• Oszczędność naszego czasu
• Oszczędność czasu innych programistów (nie
muszą się uczyć naszego rozwiązania)
• Bezpieczniejszy i lepiej przetestowany kod
97. Korzystanie z dostępnych API
• Oszczędność naszego czasu
• Oszczędność czasu innych programistów (nie
muszą się uczyć naszego rozwiązania)
• Bezpieczniejszy i lepiej przetestowany kod
98. A GDYBY TAK NAPISAĆ WŁASNĄ
WERSJĘ THEME MODS API?
99. A GDYBY TAK NAPISAĆ WŁASNĄ
WERSJĘ THEME MODS API?
107. • WordPress serializuje opcje motywu i treść
widżetów
• Serializacja uniemożliwia łatwą zmianę wartości
• Rozwiązanie: http://dziudek.pl/motywy/
przechowywanie-nazwy-domeny-w-ustawieniach-
motywu
108. • WordPress serializuje opcje motywu i treść
widżetów
• Serializacja uniemożliwia łatwą zmianę wartości
• Rozwiązanie: http://dziudek.pl/motywy/
przechowywanie-nazwy-domeny-w-ustawieniach-
motywu
109. • WordPress serializuje opcje motywu i treść
widżetów
• Serializacja uniemożliwia łatwą zmianę wartości
• Jedno z rozwiązań: http://dziudek.pl/motywy/
przechowywanie-nazwy-domeny-w-ustawieniach-
motywu
112. • Zamiast znacząco modyfikować standardowe
odpowiedzi REST API lepiej stworzyć dedykowane
end-pointy dla swojego motywu w odpowiedniej
przestrzeni nazw np. slug_theme/v1
• Dodając pola do odpowiedzi REST API należy
pamiętać by je odpowiednio prefiksować np.
slug_category
113. • Zamiast znacząco modyfikować standardowe
odpowiedzi REST API lepiej stworzyć dedykowane
end-pointy dla swojego motywu w odpowiedniej
przestrzeni nazw np. slug_theme/v1
• Dodając pola do odpowiedzi REST API należy
pamiętać by je odpowiednio prefiksować np.
slug_category