Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00359 008557 10455145 na godz. na dobę w sumie
Podręcznik WordPressa. Smashing Magazine - książka
Podręcznik WordPressa. Smashing Magazine - książka
Autor: Liczba stron: 384
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-6678-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> wordpress
Porównaj ceny (książka, ebook, audiobook).

Najlepszy podręcznik o Wordpressie!

Dwóch gigantów postanowiło połączyć swoje potencjały. Razem stworzyli niezwykłą książkę, którą właśnie trzymasz w rękach. Jednym z nich jest Smashing Magazine, należący do najpopularniejszych serwisów poświęconych tworzeniu stron WWW i nie tylko, a drugim Wordpress, lider wśród systemów do prowadzenia blogów. Obok tej pozycji nie możesz przejść obojętnie!

W tej niepowtarzalnej i wyśmienitej książce znajdziesz zbiór najświeższych, najciekawszych i najlepszych informacji poświęconych systemowi Wordpress. W czasie lektury dowiesz się, jak używać tej platformy jako systemu CMS oraz narzędzia do blogowania czy projektowania witryn dowolnego typu. Ponadto nauczysz się tworzyć genialne motywy, przydatne wtyczki oraz integrować Wordpressa z portalami społecznościowymi. Szczególną uwagę powinieneś zwrócić na zagadnienia poświęcone SEO - przestrzeganie dobrych zasad z pewnością ułatwi Ci zaistnienie w sieci. Książka ta jest obowiązkową pozycją dla każdego użytkownika platformy Wordpress!

Tylko krok dzieli Cię od:

Kompletne i przyjazne źródło informacji o platformie Wordpress!



Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Smashing WordPress: Beyond the Blog Tłumaczenie: Łukasz Piwko ISBN: 978-83-246-6678-2 Translation copyright © 2013 by Helion S.A. This edition first published 2012 © 2012 John Wiley Sons, Ltd. All Rights Reserved. Authorised translation from the English language edition published by John Wiley Sons Limitd. Responsibility for the accuracy of the translation rests solely with Helion S.A. and is not the responsibility of John Wiley Sons Limited. Wiley and the Wiley logo are trademarks or registered trademarks of John Wiley and Sons, Inc. and/ or its affiliates in the United States and/or other countries, and may not be used without written permission. WordPress is a registered trademark of Automattic, Inc. All other trademarks are the property of their respective owners. John Wiley Sons, Ltd. is not associated with any product or vendor mentioned in the book. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/podwsm.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/podwsm Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści O autorze Wprowadzenie CZĘŚĆ I PODSTAWY WORDPRESSA Rozdział 1. Anatomia instalatora WordPressa Podstawowa instalacja Instalacja z kreatorem Instalacja ręczna Korzystanie z zewnętrznego serwera baz danych Inne ustawienia bazy danych Przydatne funkcje pliku wp-config.php Kilka słów na temat instalatorów Przenoszenie instalacji WordPressa do nowego katalogu Modyfikowanie bazy danych Struktura bazy danych WordPressa Usuwanie problemów bezpośrednio w bazie danych Robienie kopii zapasowej Zmienianie hosta Narzędzia eksportu i importu Problemy z importowaniem i eksportowaniem danych Zabezpieczanie WordPressa Użytkownicy i hasła Zabezpieczenia po stronie serwera W następnym rozdziale Rozdział 2. Składnia WordPressa WordPress i PHP Dokumentacja WordPressa Rdzeń WordPressa Motywy i szablony Tagi szablonowe Tagi dołączania plików Przekazywanie kilku parametrów do tagów szablonowych Argumenty w stylu funkcji i łańcuchów zapytań Typy danych 13 15 19 21 22 22 23 26 26 27 28 29 30 31 31 32 34 34 36 38 39 39 40 43 44 44 44 46 49 49 51 52 54 Poleć książkęKup książkę SPIS TREŚCI Tagi warunkowe Co w nich takiego wyjątkowego W następnym rozdziale: pętla Rozdział 3. Pętla Zasada działania pętli WordPressa Najprostsza pętla Zapisywanie pętli w pliku szablonowym loop.php Kilka słów o WP_Query Używanie pętli Przyklejanie wpisów Formaty wpisów Tag get_template_part() i formaty wpisów Funkcja query_posts() Co zamiast pętli Tworzenie wielu pętli Wyświetlanie proponowanych artykułów To było niezłe, ale cztery pętle to dopiero coś Oswajanie się z pętlą CZĘŚĆ II PROJEKTOWANIE I PROGRAMOWANIE MOTYWÓW 6 WORDPRESSA Rozdział 4. Motywy do WordPressa — wiadomości podstawowe Podstawy budowy motywu Podstawowe elementy motywu Co będziemy robić Kilka słów na temat języka HTML5 Tworzenie plików szablonowych Deklaracja motywu w pliku style.css Plik header.php Plik footer.php Prawa kolumna: plik sidebar.php Treść główna: plik index.php Przenoszenie pętli do osobnego pliku Pojedyncze wpisy i strony Szablony archiwów Błędy 404, wyszukiwarka i zrzuty ekranu Plik functions.php Pliki szablonowe Kiedy używane są poszczególne pliki szablonowe Hierarchia szablonów Szablony stron Korzystanie z pliku functions.php Ustawianie domyślnej szerokości Dodawanie elementów promocyjnych za pomocą pliku functions.php 55 56 57 59 60 60 61 62 63 69 72 74 75 78 79 80 82 86 89 91 92 92 93 94 95 95 96 100 102 103 109 111 114 116 117 118 120 121 121 124 125 126 Poleć książkęKup książkę Widżety — czym są i do czego służą Deklarowanie obszarów na widżety Deklarowanie wielu obszarów na widżety Dostosowywanie widżetów Upiększanie komentarzy Podział komentarzy na wątki Wyróżnianie autora wpisu Dodawanie własnych pól Najczęstsze zastosowanie własnych pól Kwestia użyteczności Tworzenie motywu bazowego Publikowanie motywu Lista punktów do sprawdzenia przed publikacją motywu Motywy komercyjne a licencja GPL Zgłaszanie motywów do WordPress.org W następnym rozdziale Rozdział 5. Motywy potomne Genialność motywów potomnych Jak działają motywy potomne Piękno techniki przesłaniania plików szablonowych Wspaniały szablon loop.php Motywy potomne do zastosowań specjalnych Inne spojrzenie na kwestię dziedziczenia Często spotykane problemy Motywy potomne a zarządzanie wieloma witrynami Zarządzanie projektami wielu witryn Nie zapominaj o pliku functions.php Nie należy przesadzać Szkielety motywów Dla odmiany kilka słów o motywach nadrzędnych Wyższy poziom wtajemniczenia Rozdział 6. Motywy dla zaawansowanych Planowanie motywu Zasada 1. Stylizuj według kategorii, sortuj według tagów, a dostosowuj według formatów wpisów Zasada 2. Starannie przemyśl własne pola Zasada 3. Używaj stron i własnych typów wpisów Czy to wszystko? Indywidualne techniki stylizacji Stylizowanie wpisów Klasy dla elementu body Przyklejone wpisy Używanie własnych pól Podstawy własnych pól Tworzenie modułów meta SPIS TREŚCI 7 127 128 128 129 130 131 133 133 133 134 134 136 136 139 139 142 143 144 145 147 147 149 149 150 150 151 152 152 153 153 154 155 156 157 157 158 158 158 159 161 163 164 165 166 Poleć książkęKup książkę SPIS TREŚCI Ciekawe funkcje własne Poprawne dodawanie funkcji w pliku functions.php Ikony wpisów Własne menu Własne nagłówki Własne obrazy tła Haki akcji Używanie haków Tworzenie własnych haków Odłączanie akcji od haków Taksonomie Zastosowania taksonomii Myśl Taksonomie a przenośność Własne typy wpisów Używanie własnych typów wpisów Używanie własnych typów wpisów w motywach Strony opcji motywu Problemy dotyczące opcji motywów Obsługa różnych języków Praca z plikami językowymi Problem z nazwami Kanały RSS Kanały WordPressa Tworzenie własnego kanału RSS Podstawowe kwestie SEO Pozbywanie się niepotrzebnych rzeczy z motywu Motywy a wtyczki CZĘŚĆ III WTYCZKI DO WORDPRESSA 8 Rozdział 7. Anatomia wtyczki do WordPressa Rodzaje wtyczek Zwykłe wtyczki Wtyczki do rdzenia Wtyczki obowiązkowe Tworzenie wtyczek do użytku w sieciach witryn Wtyczki dla całej sieci Podstawy budowy wtyczek Metody inkorporowania wtyczek Używanie haków Tworzenie własnych tagów szablonowych Funkcje nadpisujące Własne taksonomie i typy wpisów Powody, aby użyć wtyczki Tworzenie własnej taksonomii Tworzenie własnego typu wpisów 167 168 169 170 170 171 171 172 173 174 174 175 175 176 176 177 177 177 178 179 180 181 181 182 183 183 185 186 189 191 192 192 192 193 193 194 195 197 197 198 199 199 200 200 202 Poleć książkęKup książkę SPIS TREŚCI Co powinna mieć każda wtyczka Ustawienia wtyczek Baza danych a odinstalowywanie wtyczki Po deinstalacji Wtyczki tworzące widżety Tworzenie widżetu Widżety kokpitu Kwestia korzystania z bazy danych we wtyczkach Zgodność wsteczna wtyczek Publikowanie wtyczek w portalu WordPress.org Słowo ostrzeżenia na temat tworzenia wtyczek Rozdział 8. Wtyczka czy plik functions.php? Kiedy tworzyć wtyczki Rozszerzanie funkcjonalności za pomocą wtyczek Ostrzeżenie: wtyczki mogą spowolnić Twoją witrynę Kiedy używać pliku functions.php Dylemat ze skrótami kodowymi Rozwiązanie problemu poprzez użycie motywu potomnego Rozwiązanie uniwersalne: wtyczka na funkcje Tworzenie wtyczki na funkcje Jak ważna jest przenośność Planowanie rozszerzania funkcjonalności WordPressa CZĘŚĆ IV DODATKOWE FUNKCJE I ROZSZERZANIE FUNKCJONALNOŚCI WORDPRESSA Rozdział 9. Używanie WordPressa jako systemu CMS Czy WordPress jako CMS to dobry wybór Lista punktów do sprawdzenia zanim wybierze się WordPressa Ograniczanie WordPressa do minimum Dostosowywanie panelu administracyjnego Usuwanie funkcji typowych dla bloga Idealna konfiguracja prostej statycznej witryny Bardziej zaawansowane rozwiązania Zastosowanie własnych typów wpisów i taksonomii w WordPressie używanym jako CMS Wykorzystanie widżetów w CMS-ie Obsługa menu Integracja treści spoza WordPressa Nie zapomnij dodać instrukcji obsługi Ostatnie słowo na temat używania WordPressa jako systemu CMS Rozdział 10. Integracja WordPressa z mediami społecznościowymi Integracja WordPressa z Facebookiem Przycisk Lubię to Widżety profilowe 204 204 209 210 211 212 214 216 217 217 218 221 222 222 222 223 224 225 225 225 227 228 229 231 232 233 234 235 236 237 239 239 240 242 242 244 244 245 246 246 248 9 Poleć książkęKup książkę SPIS TREŚCI Integracja WordPressa z Twitterem Dodawanie przycisków i widżetów Twittera do strony Rozszerzenia Twittera Integracja witryny z Google+ Korzystanie z zewnętrznej obsługi komentarzy Jeden login do wszystkich serwisów Jak ważne są media społecznościowe Rozdział 11. Sztuczki projektowe Zwiększanie kontroli nad wpisami Tworzenie projektów opartych na tagach Używanie własnych pól Podpinanie się do funkcji body_class(), post_class() oraz comment_class() Dodawanie własnych taksonomii Ulepszanie menu Przesuwane drzwi Menu rozwijane Wstawianie reklam w pętli Tworzenie pomocnych stron błędu 404 Używanie bibliotek JavaScript w WordPressie Rejestrowanie skryptów Dostosowywanie stylu WordPressa do własnej marki Własny formularz logowania Motywy panelu administracyjnego Dopieszczanie witryny 10 Rozdział 12. Zabawa z mediami Tworzenie galerii obrazów Stylizowanie galerii Lepsze przeglądanie w lekkich okienkach Galerie spoza WordPressa Formaty wpisów Osadzanie treści multimedialnej na stronach Konfigurowanie ustawień Magiczna technika oEmbed Wyświetlanie losowych obrazów Wyświetlanie losowych obrazów z galerii Dodatkowe opcje losowania obrazów Optymalne wykorzystanie serwisów do publikowania zdjęć Przechowywanie obrazów w serwisie Flickr Używanie pokazów slajdów z serwisu Flickr Strzeż się bałaganu Rozdział 13. Dodatkowe funkcje Wyświetlanie treści na kartach Inteligentne zastosowanie Używać kart czy nie 248 249 250 252 253 254 256 257 258 258 259 261 261 262 263 265 266 268 268 269 270 271 272 274 275 276 277 280 281 282 283 283 284 284 285 286 287 288 290 292 293 294 294 297 Poleć książkęKup książkę SPIS TREŚCI Wyświetlanie zawartości kanałów RSS Wbudowany parser Buforowanie przy użyciu API Transients Mieszanie kanałów za pomocą SimplePie Własne skróty kodowe Dodawanie skrótów kodowych Ciekawostki dotyczące skrótów kodowych Wysyłanie e-maili z WordPressa Dodawanie formularza logowania Drukowanie treści Więcej… Rozdział 14. Nietypowe zastosowania WordPressa Publikowanie treści dostarczanej przez użytkowników Przyjmowanie wpisów od użytkowników Obsługa wiadomości i recenzji publikowanych przez użytkowników Tworzenie tablicy ogłoszeń o pracę Funkcja wp_editor() Ostatnie słowo na temat treści dodawanej przez użytkowników WordPress jako baza wiedzy Dodawanie funkcji Dodatkowe ulepszenia WordPress i handel elektroniczny Prowadzenie sklepu opartego na WordPressie Sprzedawanie produktów cyfrowych Budowa sklepu Tworzenie katalogu produktów Tworzenie typu wpisów dla książek Tworzenie strony dla książek Promowanie produktów Blog ze smakiem, czyli witryna z przepisami Przystawka, czyli wybór motywu Danie główne — przepisy jako typ wpisów Deser — własne taksonomie Ziółko na trawienie — podsumowanie Tworzenie witryny z odnośnikami Alternatywne rozwiązanie: odnośnikowy format wpisów Kilka uwag na temat zastosowań Mieszanie wpisów odnośnikowych ze zwykłą treścią Inne zastosowania WordPressa Strona z wydarzeniami i kalendarz Intranet i współpraca Społeczności i fora Bazy danych Statyczne witryny Dzienniki i notatki Możesz mieć wszystko, czego chcesz 11 297 298 299 300 301 301 302 303 304 306 308 309 310 311 312 313 315 316 316 317 318 319 320 320 321 321 322 323 326 328 329 329 330 334 334 336 337 337 338 338 339 339 340 340 340 341 Poleć książkęKup książkę SPIS TREŚCI CZĘŚĆ V DODATKI Dodatek A Niezbędne wtyczki do WordPressa Wtyczki związane z treścią Wtyczki multimedialne Wtyczki administracyjne Wtyczki do zarządzania komentarzami i eliminowania spamu Wtyczki mediów społecznościowych Wtyczki subskrypcji i do obsługi urządzeń przenośnych Wtyczki dotyczące SEO i wyszukiwania Kod źródłowy i dane wyjściowe Przestroga na zakończenie: czy na pewno potrzebujesz tej wtyczki Dodatek B Motywy bazowe Jak wybrać motyw Znaczenie słowa szkielet Propozycje motywów Motywy Twenty Ten i Twenty Eleven Starkers Roots Toolbox Constellation Spectacular Bones Twój motyw, Twoje zasady Skorowidz 12 343 345 346 347 348 353 354 355 356 358 360 361 362 362 363 363 364 365 366 367 368 369 369 371 Poleć książkęKup książkę PODRĘCZNIK WORDPRESSA 7 I Ł A Z D Z O R ANATOMIA WTYCZKI DO WORDPRESSA NIE MA WĄTPLIWOŚCI, że wtyczki nie są tym samym co motywy, choć można znaleźć wiele łączących je podobieństw. Można powiedzieć, że gdy implementuje się jakąkolwiek funkcję w pliku functions.php, to w istocie pisze się wtyczkę. Dzieli je jednak ogromna różnica. Motywy służą do prezentowania treści witryny przy użyciu dostępnych narzędzi. Natomiast wtyczki służą do rozszerzania funkcjonalności WordPressa o dodatkowe funkcje. Należy o tym pamiętać, ponieważ rozbudowywanie pliku functions.php w nieskończoność wcale nie jest najlepszym rozwiązaniem. W tym rozdziale spojrzymy na wtyczki z nieco innej perspektywy niż do tej pory. Za pomocą wtyczki można zrobić wszystko. Ogólnie rzecz biorąc, wtyczki są metodą pozwalającą dodać do WordPressa dowolną funkcję bez żadnych ograniczeń. Porównaj to z kombinowaniem przy użyciu kilku tagów w plikach szablonowych motywu. W przypadku wtyczek kwestią nie jest, co można zrobić, lecz po co miałoby się coś robić. Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA RODZAJE WTYCZEK Wyróżnia się trzy główne rodzaje wtyczek: zwykłe wtyczki, których na pewno nieraz używałeś, wtyczki do rdzenia (ang. drop-in), które zastępują rdzenne funkcje, oraz wtyczki obowiązkowe. ZWYKŁE WTYCZKI Pod pojęciem zwykłych wtyczek rozumiem wtyczki, do których używania jesteś przyzwyczajony. Są to wtyczki, które się pobiera z internetu oraz włącza, aby rozpocząć ich używanie. Taką zwykłą wtyczką jest np. Akismet (http://wordpress.org/extend/plugins/akismet). Aby taka wtyczka działała, wystarczy ją po prostu włączyć, ewentualnie skonfigurować jakieś drobne ustawienia. Zwykłe wtyczki są przechowywane w folderze wp-content/plugins/. W zasadzie o tym rodzaju wtyczek wszystko już wiesz, a więc przejdźmy do omówienia następnych typów. 192 WTYCZKI DO RDZENIA Wtyczki do rdzenia przesłaniają rdzenne funkcje systemu. Umieszcza się je bezpośrednio w folderze wp-content pod nazwą odpowiadającą plikowi, który mają zastąpić, np. advanced-cache.php albo db.php. Poniżej podano dostępne wtyczki tego typu. Pamiętaj, że jeśli zdecydujesz się na ich użycie, musisz rzeczywiście napisać własny kod zastępujący standardowe skrypty. Jeśli tego nie zrobisz, prawie na pewno będziesz mieć problemy.  advanced-cache.php — własne skrypty zaawansowanego buforowania;  db.php — własna klasa bazy danych;  db-error.php — własne powiadomienia o błędach bazy danych;  install.php — własne skrypty instalacyjne;  maintenance.php — własne wiadomości dotyczące spraw utrzymania serwisu;  object-cache.php — zewnętrzne buforowanie;  sunrise.php — skrypty, które mają zostać wykonane przed załadowaniem sieci witryn;  blog-deleted.php — usuwanie blogów w sieci witryn;  blog-inactive.php — wiadomości o nieaktywnych blogach w sieci witryn;  blog-suspended.php — wiadomości o zawieszonych blogach w sieci witryn. Wtyczek tych należy używać bardzo ostrożnie, chociaż dają one naprawdę bardzo duże możliwości. Możliwe, że niektórych z nich zdarzało Ci się używać, zapewne jako części innych wtyczek. W szczególności dotyczy to wtyczki advanced-cache.php. Zabawa z niektórymi jest mniej ryzykowna, np. wtyczka maintenance.php umożliwia wyświetlenie własnej wiadomości na temat uaktualniania instalacji systemu. Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA WTYCZKI OBOWIĄZKOWE Wtyczki obowiązkowe różnią się od zwykłych wtyczek. Ich pliki przechowywane są w folderze wp-content/mu-plugins/ i nie da się ich wyłączyć w panelu administracyjnym WordPressa. Jedyny sposób na ich dezaktywację to usunięcie ich z folderu na serwerze. Wtyczki obowiązkowe nie muszą zawierać specjalnego nagłówka. Bez niego również zostaną wykonane. W folderze wp-content/mu-plugins/ można umieścić dowolną wtyczkę, ale z niektórymi wtyczkami mogą być problemy, zwłaszcza w sieciach witryn. Dlatego postępuj ostrożnie. Najlepiej wtyczek używać w sposób zgodny z ich przeznaczeniem. Wtyczki obowiązkowe są najlepszym rozwiązaniem, gdy chcemy mieć pewność, że jakieś funkcje nie zostaną przypadkowo wyłączone. TWORZENIE WTYCZEK DO UŻYTKU W SIECIACH WITRYN Od WordPressa 3.0 wersja systemu dla wielu użytkowników, zwana WordPress MU, stała się częścią podstawowej wersji. Teraz jest to tzw. funkcja tworzenia wielu witryn (ang. multisite), dzięki której można tworzyć sieci witryn. Większość wtyczek i motywów dobrze działa w tych sieciach. Problemy mogą się pojawić jedynie wtedy, gdy wtyczka będzie dodawać tabele do bazy danych albo modyfikować istniejące tabele rdzenia. Funkcję sieci witryn włącza się poprzez wpisanie kilku wierszy kodu w pliku wp-config.php. Na początek należy dodać poniższy wiersz kodu nad komentarzem /* To wszystko, zakoñcz edycjÚ w tym miejscu! Miïego blogowania! */: define( WP_ALLOW_MULTISITE , true ); Dodanie tego wiersza kodu do pliku wp-config.php spowoduje pojawienie się nowego odnośnika w panelu administracyjnym (rysunek 7.1). Gdy go klikniesz, zostaną wyświetlone proste instrukcje, według których należy postępować, aby uruchomić sieć witryn. Bardziej szczegółowe informacje na ten temat znajdują się na stronie http://codex.wordpress.org/Create_A_Network. Sieć witryn pozwala uruchomić coś w rodzaju nadrzędnego panelu administracyjnego, w którym administrator może zarządzać wieloma witrynami utworzonymi w jego sieci. W serwisie WordPress.com każdy może założyć własnego bloga, ale sieć witryn niekoniecznie musi działać właśnie w ten sposób. Równie dobrze można ją wykorzystać do uruchomienia wielu witryn, nie pozwalając użytkownikom tworzyć własnych blogów. Tworzenie wtyczek przeznaczonych do użytku w sieciach witryn niewiele różni się od tworzenia zwykłych wtyczek. Największa różnica dotyczy bazy danych i w mniejszym stopniu struktury katalogów. Jeśli chodzi o strukturę katalogów, to prawie wszystko jest tak samo jak w standardowym WordPressie. Różnica polega na dodaniu katalogu blogs.dir do folderu wp-content, w którym przechowywane są wszystkie dane utworzonych witryn, takie jak obrazy i inne pliki. Z folderu 193 Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA Rysunek 7.1. Panel administracji siecią witryn 194 tego nie będziesz często korzystać, ponieważ motywy i wtyczki należą do folderu wp-content, tak jak zawsze. Jeśli chcesz, aby wybrane wtyczki były włączone w całej sieci, możesz je aktywować w panelu administracyjnym sieci. Możesz też skorzystać z wtyczek obowiązkowych, czyli po prostu umieścić wybrane wtyczki w folderze wp-content/mu-plugins/, chociaż to może przysporzyć Ci problemów, jeśli któraś z tych wtyczek nie będzie przystosowana do takiego sposobu użycia. Zwykle najlepszym rozwiązaniem jest aktywowanie wtyczki dla całej sieci. Sam proces powstawania wtyczki wygląda tak samo, jak dla normalnego WordPressa. Trzeba tylko bardziej uważać podczas tworzenia nowych tabel w bazie danych oraz przy pobieraniu treści z tabel rdzenia. W większości przypadków czynności te nie sprawiają kłopotów, ale baza danych dla sieci witryn ma trochę inną strukturę, więc należy uważać. Kolejną kwestią, jaką należy wziąć pod uwagę podczas pisania wtyczki dla sieci witryn, jest jej przewidywany sposób użycia. Sieć witryn może być prowadzona na wiele różnych sposobów, może być otwarta lub zamknięta, użytkownicy mogą mieć możliwość używania wtyczek lub nie itd. Trzeba to wszystko wziąć pod uwagę, gdy tworzy się wtyczkę. WTYCZKI DLA CAŁEJ SIECI Wtyczki można też włączać dla całej sieci witryn w panelu administracyjnym sieci. W ten sposób można włączać wtyczki znajdujące się w folderze wp-content/plugins/ dla wszystkich witryn. To jest oczywiście bardzo wygodne rozwiązanie i należy z niego korzystać, zamiast używać wtyczek obowiązkowych. Skoro WordPress może być automatycznie aktualizowany, to im więcej ustawień można zdefiniować kliknięciem w panelu administracyjnym, tym lepiej. Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA PODSTAWY BUDOWY WTYCZEK Podstawy budowy wtyczek są podobne do podstaw budowy motywów:  Główny plik wtyczki musi być w formacie PHP i mieć niepowtarzalną nazwę albo znajdować się w folderze o niepowtarzalnej nazwie, jeśli wtyczka składa się z wielu plików.  Główny plik PHP wtyczki musi mieć specjalny identyfikujący go nagłówek, podobny do pliku style.css w motywach. Wtyczka może składać się z pliku głównego i wielu plików zawierających różne funkcje, podobnie jak motyw może składać się z wielu plików szablonowych i pliku style.css. Zanim przejdziemy do szczegółowego omawiania podstaw budowy wtyczek, muszę Cię ostrzec, że tworzenie wtyczek jest znacznie bardziej wymagającym zadaniem niż tworzenie motywów. Do tego potrzebna jest solidna znajomość języka PHP i jeśli masz w tej kategorii braki, lepiej trochę się podszkol, zanim zaczniesz pisać jakąś poważniejszą wtyczkę. Bardzo ważną kwestią jest wybór nazwy pliku lub folderu wtyczki, ponieważ wtyczka ta będzie zapisana w folderze wp-content/plugins/ z innymi wtyczkami, a więc może dojść do konfliktów nazw. Nazwij zatem swoją wtyczkę w taki sposób, aby ktoś, kto będzie jej szukał na FTP, bez problemu mógł ją znaleźć, znając jej nazwę tylko z panelu administracyjnego WordPressa. 195 Blok identyfikacyjny wtyczki wygląda znajomo. Poniżej znajduje się przykład takiego bloku: ?php /* Plugin Name: Moja wtyczka Plugin URI: http://url-mojej-wtyczki.com/ Description: Opis mojej wtyczki. Version: 1.0 Author: Thord Daniel Hedengren Author URI: http://tdh.me/ */ ? Tak naprawdę obowiązkowo nagłówek musi zawierać tylko nazwę wtyczki, która w powyższym przykładzie została zapisana w pierwszym wierszu komentarza. Jednak pozostałe informacje również należy dodawać, aby użytkownik mógł przeczytać, co to za wtyczka, skąd pobierać aktualizacje, jaki jest numer wersji itd. Powinno się także dodać informację o licencji. W dokumentacji WordPressa zalecane jest używanie poniższego standardowego wyciągu z tekstu licencji GPL: ?php /* Copyright ROK AUTOR (e-mail : E-MAIL AUTORA WTYCZKI) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ ? Oczywiście napisy ROK, AUTOR i E-MAIL AUTORA WTYCZKI należy zastąpić prawdziwymi informacjami. Można także dołączyć cały tekst licencji GPL w pliku o nazwie license.txt. Tekst ten jest dostępny pod adresem www.gnu.org/copyleft/gpl.html. To wystarczy, aby WordPress znalazł i poprawnie zidentyfikował wtyczkę. Jeśli umieścisz ją w folderze wp-content/plugins/, zostanie wyświetlona na liście wtyczek sekcji Wtyczki w panelu administracyjnym systemu. Można ją tam włączyć, aby była dostępna w motywie i akcjach WordPressa. Od tego momentu zaczyna się prawdziwa zabawa, ponieważ teraz musisz zastanowić się, co wtyczka ma robić i jak sprawić, żeby to robiła. 196 Niezależnie od tego, czy planowana wtyczka ma zmienić sposób działania WordPressa, czy tylko dodać do niego jakąś funkcję, przed rozpoczęciem pracy powinieneś przejrzeć poniższą listę punktów do sprawdzenia. Dzięki temu możesz zaoszczędzić sobie sporo czasu i problemów.  Czy taka wtyczka już istnieje? Jeśli tak, zastanów się, czy nie lepiej jej użyć, zamiast tworzyć nową o prawie identycznym działaniu.  Upewnij się, że nazwa Twojej wtyczki nie jest już zajęta. Sprawdź nie tylko w zasobach WordPress.org, ale również w Google. Dobrym sposobem na utworzenie niepowtarzalnej nazwy jest wstawienie na początku nazwy firmy, np. acme_nazwawtyczki.  Nazwy wszystkich funkcji konsekwentnie zaczynaj od jakiegoś przedrostka. W ten sposób unikniesz konfliktów nazw z innymi funkcjami. To ważne: przedrostki stosuj przed wszystkimi nazwami!  Czy chcesz umożliwić przetłumaczenie wtyczki na różne języki? Powinieneś. Przygotowywanie wtyczki do internacjonalizacji wygląda tak samo jak w przypadku motywów, a więc jest bardzo łatwe.  Czy wtyczka będzie tworzyła widżety? Jeśli tak, to jakie ustawienia powinna udostępniać?  Czy potrzebna będzie strona ustawień w panelu administracyjnym? Staraj się, aby ustawień było jak najmniej, ponieważ użytkownicy wolą proste rozwiązania.  Na jakiej licencji będzie udostępniana wtyczka? Pamiętaj, że musi być to licencja zgodna z GPL, jeśli chcesz umieścić wtyczkę w zbiorach WordPress.org.  Na koniec sprawdź, czy nagłówek jest aktualny, czy numer wersji jest poprawny, czy wszystkie łącza działają, czy w paczce są wszystkie pliki oraz czy nie ma błędów w tekście. Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA METODY INKORPOROWANIA WTYCZEK Do budowy wtyczek o wiele częściej używa się zwykłego kodu PHP niż przy budowie motywów. Podczas gdy tagów szablonowych i warunkowych także można używać, to jednak w zdecydowanej większości przypadków będziesz pisać własne funkcje. Oczywiście dużo zależy też od rodzaju tworzonej wtyczki, jednak ogólnie rzecz biorąc, kod wtyczki jest w większości dziełem jej autora, a nie autorów WordPressa. Działanie wtyczek zwykle opiera się na własnych funkcjach, które programista podłącza do haków i filtrów WordPressa. Umieszczając funkcję w odpowiednim miejscu, np. podłączając do wp_head lub komentarzy, możesz ją uruchomić w odpowiednim czasie. W kolejnych trzech podrozdziałach znajduje się opis trzech sposobów pisania i używania wtyczek. Zaczniemy od jak zawsze ważnych haków. UŻYWANIE HAKÓW Pamiętasz opis haków z poprzedniego rozdziału? Haki akcji są wyzwalane przez określone zdarzenia podczas działania WordPressa, np. dla publikacji wpisu jest hak publish_post. Drugi rodzaj haków to haki filtrów. Są to funkcje, przez które WordPress przekazuje dane, a więc można ich używać do obróbki danych. Do przydatnych haków filtrów zaliczają się np. the_excerpt i the_title. Trzeba je odróżniać od tagów szablonowych. 197 Haki są przydatne także przy budowie wtyczek, nie tylko motywów. Dzięki nim można podłączyć wtyczki do odpowiednich części WordPressa, np. wp_head albo wp_footer. Dobrym tego przykładem jest dodanie funkcji w pliku functions.php, a następnie podpięcie jej do haka wp_footer za pomocą funkcji add_action(), opisane w rozdziale 6. Podczas budowy wtyczek często pisze się funkcje, które następnie podłącza się do wybranych haków za pomocą funkcji add_action(): add_action ( $nazwa_haka, $nazwa_funkcji, $priorytet, $parametry ); W miejsce nazwa_haka należy wpisać nazwę haka, do którego chcemy dodać naszą akcję. Napotykając ten hak podczas przetwarzania kodu, WordPress sprawdza, czy nie ma dla niego zarejestrowanych żadnych funkcji. Jeśli są, wykonuje je. Funkcja, która zostanie wykonana, jest zdefiniowana w miejscu nazwa_funkcji. Na przykład w poniższym fragmencie kodu zostanie wywołana funkcja smashingshortcode podczas wykonywania funkcji wp_head(): add_action ( wp_head , smashingshortcode ); Argumenty $priority i $parameters są nieobowiązkowe. Argument $priority jest liczbą całkowitą określającą priorytet (domyślnie ma wartość 10), według którego akcje są sortowane podczas dodawania do haka. Im mniejsza liczba, tym wcześniej dana funkcja zostanie wykonana. Jeśli więc chcesz, aby jedna funkcja została wykonana przed inną funkcją, za pomocą tego atrybutu możesz to ustawić. Natomiast argument $parameters określa liczbę argumentów Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA przyjmowanych przez naszą funkcję (domyślna wartość to 1). Jeśli chcesz, aby funkcja przyjmowała więcej niż jeden argument, możesz wpisać w tym miejscu dowolną liczbę całkowitą. Argumenty priorytetu i liczby argumentów nie są często używane, ale w pewnych przypadkach są naprawdę bardzo przydatne. Ponieważ są opcjonalne, to jeśli się ich nie potrzebuje, można je po prostu opuścić. Jak już jednak napisałem, są sytuacje, w których argument priorytetu jest bardzo przydatny, ponieważ umożliwia uniknięcie konfliktów między wtyczkami. Jeśli masz taki problem, możesz ustawić priorytet swojej wtyczki tak, aby była ładowana jako pierwsza lub ostatnia. Filtry działają mniej więcej tak samo, tylko zamiast add_action() używa się funkcji add_filter(). Parametry są takie same i tak samo się je przekazuje. Jedyna różnica polega na tym, że z funkcją add_filter() nie używa się haków akcji, tylko filtrów. Wiemy już, że dodawanie akcji do haków każdego rodzaju jest łatwe, ale co z ich usuwaniem? Czasami nie chcemy, aby jakiś hak był uruchamiany, więc musimy go usunąć. Dla haków akcji istnieje funkcja remove_action(), a dla haków filtrów — remove_filter(). Składnia tych funkcji jest prosta: remove_action( $hook_name, $function_name ) remove_filter( $hook_name, $function_name ) 198 Funkcje te służą nie tylko do usuwania własnych funkcji, ale również funkcji samego systemu, a więc za ich pomocą można usunąć praktycznie każdy filtr i każdą akcję, od pingowania po usuwanie załączników. Dlatego niektóre wtyczki mogą tylko usuwać funkcje WordPressa, a nie rozszerzać jego funkcjonalność. TWORZENIE WŁASNYCH TAGÓW SZABLONOWYCH Innym sposobem na uzyskanie dostępu do funkcjonalności wtyczki jest utworzenie własnych tagów szablonowych, jak bloginfo() czy the_title(). Nie jest to wcale trudne. Wystarczy po prostu utworzyć funkcję we wtyczce (lub w pliku functions.php), a następnie ją wywoływać: ?php nazwa_funkcji(); ? Proste, prawda? Może proste, ale to nie oznacza, że jest to najlepszy sposób dodawania funkcjonalności wtyczki do systemu. W tej metodzie nie musisz tworzyć żadnych haków, funkcja zostanie wykonana w chwili załadowania tagu szablonowego wtyczki, a więc można ją umieścić w plikach szablonowych motywu, gdzie się chce. Jest to szczególnie przydatne, gdy nie ma takiego haka, jaki jest w danej chwili potrzebny. Potem można utworzyć tag szablonowy. Oczywiście lepiej jest jednak używać istniejących haków, kiedy to tylko możliwe. Zanim zdecydujesz się na takie rozwiązanie, powinieneś zastanowić się nad kwestią użyteczności. Nie każdy lubi i potrafi modyfikować pliki szablonowe, dlatego zwłaszcza jeśli planujesz przekazać wtyczkę do ogólnego użytku albo klientowi, zmuszanie użytkowników do grzebania w szablonach nie będzie najlepszym pomysłem. Jeśli wtyczki używać będziesz Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA tylko Ty, nie ma to żadnego znaczenia. Jeśli jednak inni użytkownicy będą samodzielnie wybierać miejsce do umieszczenia wtyczki albo będą zmieniać jej parametry, to powinieneś poszukać innego rozwiązania. Jednak w niektórych sytuacjach samo dodanie tagu szablonowego nie wystarczy i trzeba nadpisać część funkcjonalności systemu. Wówczas należy użyć specjalnych funkcji nadpisujących (ang. pluggable functions). FUNKCJE NADPISUJĄCE Czasami trzeba nadpisać wybrane części rdzenia WordPressa, aby np. zastąpić je własnymi rozwiązaniami albo żeby po prostu się ich pozbyć, ponieważ chcemy używać WordPressa w niestandardowy sposób. Może nie chcesz, aby w panelu administracyjnym działały lokalizacje (wówczas pozbądź się funkcji load_textdomain()), albo chcesz zmienić stopkę panelu administracyjnego na własną. Tych rzeczy nie da się zrobić, usuwając tylko wybrany hak. Z tego typu problemami trzeba zwrócić się do pliku pluggable.php znajdującego się w folderze wp-includes. Oczywiście nie będziemy go modyfikować, bo mielibyśmy z nim same kłopoty przy każdej aktualizacji WordPressa. Zamiast tego napiszemy wtyczkę, która będzie go przesłaniać. Miej świadomość, że jest to niebezpieczna praca. Przede wszystkim każdą funkcję można nadpisać tylko raz, a więc jeśli dwie wtyczki nadpiszą tę samą funkcję w pliku pluggable.php, witryna w najlepszym wypadku będzie źle działać, a w najgorszym przestanie działać w ogóle. To oznacza, że nie można zainstalować dwóch wtyczek przesłaniających tę samą funkcję w pliku pluggable.php, co jest poważną wadą systemu. Z tego powodu funkcji nadpisujących najlepiej jest używać wyłącznie w witrynach, nad którymi ma się pełną kontrolę. Aby zapobiec wyświetlaniu niepotrzebnych powiadomień o błędach, dodatkowo można kod wtyczki umieścić w instrukcji warunkowej sprawdzającej, czy dana funkcja istnieje: ?php if ( ! function_exists( function_name ) ); ? Oczywiście funkcje nadpisujące są czasami przydatne. Aktualna lista funkcji, które można przesłaniać, znajduje się w dokumentacji na stronie http://codex.wordpress.org/ Pluggable_Functions. Pamiętaj, że samo poprawne napisanie wtyczki, o czym jest mowa dalej, nie wystarczy do zapewnienia jej poprawnego działania, gdy wtyczka ta usuwa wybrane części rdzenia WordPressa. Nie dziw się, jeśli coś przestanie działać albo pojawią się jakieś konflikty, których nigdy byś się nie spodziewał. Bądź co bądź funkcje WordPressa, które próbujesz obejść, po coś przecież są. WŁASNE TAKSONOMIE I TYPY WPISÓW Własne taksonomie i typy wpisów to bardzo przydatne narzędzia, zwłaszcza gdy planuje się używanie WordPressa do prowadzenia czegoś więcej niż prosty blog. Jeśli nie wiesz, do czego mogą Ci się one przydać, ciekawe przykłady ich zastosowań znajdziesz w rozdziale 14. 199 Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA Dla przypomnienia: własne taksonomie są dodatkowym sposobem organizacji treści. Domyślne tagi i kategorie są przykładami taksonomii odpowiednio niehierarchicznej i hierarchicznej, natomiast konkretne tagi i kategorie to terminy tych taksonomii. Natomiast własne typy wpisów są dodatkowym rodzajem publikacji, podobnie jak wpisy i strony, które też są rodzajem wpisów. POWODY, ABY UŻYĆ WTYCZKI Powodem, dla którego do tworzenia własnych taksonomii i typów wpisów najlepiej używać wtyczek, jest przenośność. Jeśli kod umieścisz w pliku functions.php (co jest możliwe), to po przenosinach do innego motywu zostanie on utracony, chociaż oczywiście można go skopiować do tego nowego motywu. We wtyczkach powinno się implementować raczej funkcje dotyczące treści niż projektu, dzięki czemu można ich używać w różnych motywach. Wystarczy włączyć wtyczkę i gotowe. Więcej na temat przenośności danych piszę w rozdziale 8. 200 TWORZENIE WŁASNEJ TAKSONOMII Aby utworzyć własną taksonomię, należy napisać funkcję zawierającą wywołanie funkcji register_taxonomy() i związać ją z hakiem init. Ustawienia funkcji register_taxonomy() są proste i dotyczą sposobu prezentacji taksonomii w panelu administracyjnym oraz tego, czy taksonomia powinna mieć własny bezpośredni odnośnik (argument rewrite), czy ma mieć strukturę hierarchiczną itd. Poniżej znajduje się przykład tworzenia taksonomii Moje tagi, która jest niehierarchiczna, a więc bardzo podobna do domyślnej taksonomii tagów (rysunek 7.2): // Powiązanie funkcji z hakiem init add_action( init , smashing_tax , 0 ); // Funkcja taksonomii function smashing_tax() { // Rejestracja taksonomii register_taxonomy( smashing_taxonomy , post , array( hierarchical = false, labels = array( name = Moje tagi , singular_name = Moje tagi , search_items = Przeszukuj Moje tagi , popular_items = Popularne Moje tagi ,̘ ´ add_new_item = Dodaj nowy Mój tag ), query_var = true, rewrite = true ) ); } Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA 201 Rysunek 7.2. Taksonomia Moje tagi Niezbyt skomplikowane, prawda? Kod ten możesz zapisać w pliku functions.php, ale zapewne Twoja nowa taksonomia nie jest związana z konkretnym motywem, tylko z treścią, a więc lepiej byłoby utworzyć wtyczkę. W tym celu wystarczy przenieść ten kod do nowego pliku PHP zawierającego na początku odpowiedni nagłówek. Poniżej znajduje się treść takiego pliku: ?php /* Plugin Name: Moje tagi Plugin URI: http://tdh.me/wordpress/moje-tagi/ Description: Dodaje taksonomiĊ Moje tagi. Version: 1.0 Author: Thord Daniel Hedengren Author URI: http://tdh.me/ */ // Powiązanie funkcji z hakiem init add_action( init , smashing_tax , 0 ); // Funkcja taksonomii function smashing_tax() { // Rejestracja taksonomii register_taxonomy( smashing_taxonomy , post , array( hierarchical = false, labels = array( name = Moje tagi , singular_name = Moje tagi , search_items = Przeszukuj Moje tagi , popular_items = Popularne Moje tagi ,̘ ´_new_item = Dodaj nowy Mój tag ), query_var = true, rewrite = true ) ); } Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA TWORZENIE WŁASNEGO TYPU WPISÓW Własne typy wpisów również tworzy się w prosty sposób. Mimo że je również można tworzyć we wtyczkach (istnieją nawet wtyczki dodające interfejs pozwalający tworzyć własne typy wpisów), tutaj skoncentruję się na robieniu tego bezpośrednio w motywie. Kluczowe znaczenie w tym przypadku ma funkcja register_post_type(): // Rejestracja nowego typu wpisów register_post_type( moj_typ_wpisow , array( labels = array( name = Mój typ wpisów ), singular_label = Mój typ wpisów , public = true, show_ui = true, capability_type = post , has_archive = true, hierarchical = false, show_in_menu = true, supports = array( title , editor , author , revisions , comments ) ) ); To spowoduje zarejestrowanie nowego typu wpisów o nazwie moj_typ_wpisow określonej w pierwszym parametrze. Drugi parametr to tablica zawierająca ustawienia wyglądu i właściwości tego typu wpisów, np. treść etykiet w panelu administracyjnym, czy ten typ jest publiczny, czy ma on być wyświetlany jako opcja w menu i które role użytkowników mogą z niego korzystać. Większości tych ustawień nie trzeba objaśniać, ale warto zwrócić uwagę na tablicę supports znajdującą się w tablicy ustawień. W niej definiuje się, co dany typ wpisów obsługuje, tu: tytuł, edytora tekstu, możliwość wyboru autora, wersje wpisu oraz komentarze. Żadnych taksonomii, wypisów, własnych pól — tylko to, co zostało wpisane. Aby nowy typ wpisów pojawił się w panelu administracyjnym, wystarczy powyższy kod wkleić do pliku functions.php (rysunek 7.3). Prawdopodobnie będzie trzeba ponownie wygenerować wszystkie bezpośrednie odnośniki, aby adresy wpisów nowego typu zaczęły działać. Treść własnych typów wpisów nie jest uwzględniana przez standardową pętlę. Aby je wyświetlić, trzeba tę pętlę zmodyfikować za pomocą funkcji query_posts() lub stosując jakąś inną metodę — więcej informacji o pętli znajduje się w rozdziale 3. Ale jeśli masz nowy typ wpisów, możesz bez przeszkód umieścić w menu łącze do strony ich archiwum. Istnieje wiele opcji tworzenia wpisów. Ich kompletną listę można znaleźć w dokumentacji WordPressa na stronie http://codex.wordpress.org/Function_Reference/register_post_type. Własnych typów wpisów będziemy używać w projektach opisanych w rozdziale 14., a więc jeśli chcesz dowiedzieć się więcej na temat ich możliwości, zajrzyj do tego rozdziału. 202 Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA 203 Rysunek 7.3. Nowy typ wpisów Jak kod tworzący własny typ wpisów wyglądałby we wtyczce? Bardzo podobnie do własnej taksonomii. Oto wtyczka Smashing Post Type w całej okazałości: ?php /* Plugin Name: Smashing Post Type Plugin URI: http://tdh.me/wordpress/smashing-post-type/ Description: Adding the Smashing Post Type. Version: 1.0 Author: Thord Daniel Hedengren Author URI: http://tdh.me/ */ // Dodanie do haka init add_action( init , moj_typ_wpisow ); // Dodanie wáasnych typów wpisów function smashing_post_types() { // Rejestracja Mojego typu wpisów register_post_type( moj_typ_wpisow , array( labels = array( name = Mój typ wpisów , menu_name = Moje wpisy ), singular_label = Mój typ wpisów , public = true, show_ui = true, menu_position = 5, capability_type = post , has_archive = true, hierarchical = false, show_in_menu = true, Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA supports = array( title , editor , author , revisions , comments ) ) ); } ? CO POWINNA MIEĆ KAŻDA WTYCZKA Tak naprawdę jedyną obowiązkową rzeczą, jaką musi mieć każda wtyczka, jest plik PHP zawierający nagłówek identyfikacyjny oraz kod potrzebny do wykonania zadania. W rzeczywistości jednak powinno się troszkę więcej popracować. Przecież wtyczki może używać jeszcze ktoś inny, a więc powinna ona być jak najłatwiejsza w użyciu i jak najbardziej dostępna. A to oznacza, że należy dołożyć wszelkich starań, aby wtopić wtyczkę w panel administracyjny WordPressa. To samo dotyczy wszystkich elementów widocznych dla użytkownika witryny. Niektóre wtyczki dodają elementy wizualne i jeśli wtyczka ma być udostępniana publicznie, elementy te powinny nadawać się do wyświetlenia w jak największej ilości motywów. Oczywiście kwestii tej nie ma w przypadku wtyczek pisanych tylko dla konkretnych projektów. Podobnie jest z lokalizacją. Jeśli nie planujesz dodawać obsługi innych języków, nie ma sensu przygotowywać wtyczki do lokalizacji. 204 Moim zdaniem każda wtyczka powinna mieć dołączoną licencję i instrukcję obsługi. Nie mam nic przeciwko plikom readme.txt, ale wielu użytkowników nie otwiera ich, bo im się nie chce albo są zbyt niecierpliwi. Dlatego dobrze jest, jeśli podstawowe instrukcje znajdują się w samej wtyczce. Można też dodać informacje na karcie Pomoc WordPressa za pomocą funkcji add_help_tab(). Więcej informacji na ten temat znajduje się na stronie http://codex. wordpress.org/Function_Reference/add_help_tab. USTAWIENIA WTYCZEK Czasami trzeba zapisać jakieś informacje w bazie danych. Jeśli chodzi o bazę danych, to możesz z nią robić wszystko, co można zrobić przy użyciu skryptów PHP, a więc dodawać tabele itd. Nie będę się o tym rozpisywał. Pokażę Ci natomiast, jak używać API ustawień (więcej informacji znajdziesz na stronie http://codex.wordpress.org/Settings_API), aby zlecić zapisywanie danych ustawień WordPressowi. To nie tylko pozwala zaoszczędzić mnóstwo czasu, ale również jest bezpieczne, ponieważ w WordPressie stosowane są różne zabezpieczenia, takie jak np. nonce (ang. number used once — liczba użyta tylko raz). W celach testowych utworzymy prostą stronę ustawień, którą dodamy do menu Ustawienia na lewym pasku bocznym panelu administracyjnego. Strona ta będzie zawierała pole tekstowe i pole wyboru. Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA Najpierw musimy utworzyć wtyczkę. Wystarczy nam zwykły plik PHP o nazwie smashing-settings.php zaczynający się od poniższego nagłówka: ?php /* Plugin Name: Ustawienia Smashing Plugin URI: http://tdh.me/wordpress/ustawienia-settings/ Description: Prosta wtyczka ustawieĔ. Author: Thord Daniel Hedengren Author URI: http://tdh.me/ */ Teraz dodamy stronę ustawień do menu Ustawienia. W tym celu podłączymy funkcję do haka admin_menu. W tym przykładzie użyjemy funkcji add_options_page(), ale są też inne funkcje do wyboru: // Dodaje funkcjĊ strony ustawieĔ do menu add_action( admin_menu , smashings_settingsdemo_add_page ); // Dodanie do menu function smashings_settingsdemo_add_page() { add_options_page( Przykïad ustawieñ Smashing , Ustawienia Smashing , manage_options , smashings_settingsdemo , smashings_settingsdemo_do_page ); } Za pomocą funkcji add_options_page() utworzyliśmy stronę o nazwie Przykład ustawień Smashing, która w menu po lewej stronie jest skrócona do Ustawienia Smashing. Strona ta jest dostępna tylko dla użytkowników mających rolę manage_options. Identyfikator tej strony to smashings_settingsdemo. Ponadto treść samej strony jest tworzona przez funkcję smashings_settingsdemo_do_page(), którą musimy jeszcze napisać: 205 //Rzeczywiste dodanie strony z ustawieniami function smashings_settingsdemo_do_page() { // Opuszczamy PHP na moment ? h2 Ustawienia Smashing /h2 p To jest nasza strona ustawieñ. /p form action= options.php method= post ?php settings_fields( smashings_settingsdemo ); ? ?php do_settings_sections( smashings_settingsdemo ); ? ?php submit_button(); ? /form ?php } // Powrót do PHP Jest to cały kod HTML strony ustawień — na razie jest go niewiele, ale powoli go rozbudujemy. Zwróć uwagę na funkcję settings_fields() wskazującą pole ustawień o nazwie smashings_settingsdemo utworzone za pomocą funkcji add_settings_field() Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA oraz funkcję do_settings_sections(), która wyświetla sekcję o podanej nazwie. Nie trzeba też samodzielnie tworzyć pliku zatwierdzania formularza, ponieważ można go wstawić za pomocą wywołania submit_button(). Następnie tworzymy funkcję dla naszych ustawień i dodajemy sekcję ustawień za pomocą funkcji add_settings_section() oraz pole wejściowe za pomocą funkcji add_settings_field(): // Funkcja ustawieĔ function smashings_settingsdemo_init(){ // Dodanie sekcji add_settings_section( smashing_settings_section , Smashing Settings , smashing_settings_section_callback , smashings_settingsdemo ); // Dodanie pola ustawieĔ add_settings_field( smashing_sample_input , Input sample , smashing_sample_input_callback , smashings_settingsdemo , smashing_settings_section ); 206 // Rejestracja ustawieĔ register_setting( smashings_settingsdemo , smashing_sample_input , smashing_settingsdemo_validate ); } // Inicjacja smashings_settingsdemo_init() w panelu administracyjnym add_action( admin_init , smashings_settingsdemo_init ); Nie jest to wcale takie skomplikowane. Najpierw przy użyciu funkcji add_settings_section() tworzymy sekcję o nazwie smashing_settings_section. Zwróć uwagę na wartość smashing_settingsdemo będącą parametrem $page. Używaliśmy jej już w funkcji do_settings_sections() w kodzie strony. Do nowo utworzonej sekcji dodajemy pole ustawień smashing_sample_input, w ostatnim parametrze funkcji add_settings_field() wpisując smashing_settings_section. Listy wszystkich parametrów funkcji add_settings_section() i add_settings_field() znajdują się w dokumentacji na stronach http://codex.wordpress.org/Function_Reference/add_settings_section i http://codex.wordpress.org/Function_Reference/add_settings_field. Następnie dodajemy funkcję smashings_settingsdemo_init() do haka admin_init. Następnie dodamy coś do sekcji tylko po to, aby pokazać, że jest to możliwe: // Funkcja wykonywana na początku sekcji function smashing_settings_section_callback() { echo p Informacja na poczÈtku sekcji. /p ; } Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA Nazwę funkcji smashing_settings_section_callback() widziałeś już w funkcji add_settings_section(). Jest to funkcja zwrotna, która będzie wywoływana na początku sekcji i będzie wyświetlała element p z tekstem. W podobny sposób utworzymy funkcję zwrotną dla funkcji add_settings_field() o nazwie smashing_sample_input_callback(): // Implementacja funkcji smashing_sample_input_callback() function smashing_sample_input_callback() { // Opuszczamy PHP na chwilĊ ? input type= text name= smashing_sample_input value= ?php echo get_option( smashing_sample_input ); ? / ?php } // Powrót do PHP Funkcja ta zawiera tylko pole wejściowe, którego wartość smashing_sample_input jest przekazywana przez funkcję get_option(). Wartość tę będziemy zapisywać i jest ona identyfikatorem pola, które utworzyliśmy. Na koniec musimy trochę oczyścić dane wprowadzane do formularza. W tym przykładzie użyjemy tylko funkcji esc_attr(), ale jeśli chcesz, możesz skorzystać też z innych metod oczyszczających: // Oczyszczanie function smashing_settingsdemo_validate($input) { 207 // Kodowanie $newinput = esc_attr($input); return $newinput; } Co robi ten kod? Utworzyliśmy stronę ustawień zawierającą pola ustawień tworzone za pomocą funkcji settings_fields() (w tym przykładzie tylko jedno, ale można dodać więcej) i sekcje utworzone za pomocą funkcji do_settings_section(). Poniżej znajduje się kompletny kod wtyczki. ?php /* Plugin Name: Ustawienia Smashing Plugin URI: http://tdh.me/wordpress/ustawienia-settings/ Description: Prosta wtyczka ustawieĔ. Author: Thord Daniel Hedengren Author URI: http://tdh.me/ */ // Dodaje stronĊ ustawieĔ do menu add_action( admin_menu , smashings_settingsdemo_add_page ); // Dodanie do menu function smashings_settingsdemo_add_page() { add_options_page( Przykïad ustawieñ Smashing , Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA Ustawienia Smashing , manage_options , smashings_settingsdemo , smashings_settingsdemo_do_page ); } // Rzeczywiste dodanie strony ustawieĔ function smashings_settingsdemo_do_page() { // Opuszczamy PHP na moment ? h2 Ustawienia Smashing /h2 p To jest nasza strona ustawieñ. /p form action= options.php method= post ?php settings_fields( smashings_settingsdemo ); ? ?php do_settings_sections( smashings_settingsdemo ); ? ?php submit_button(); ? /form ?php } // Powrót do PHP // Funkcja ustawieĔ function smashings_settingsdemo_init(){ 208 // Dodanie sekcji add_settings_section( smashing_settings_section , Ustawienia Smashing , smashing_settings_section_callback , smashings_settingsdemo ); // Dodanie pola ustawieĔ add_settings_field( smashing_sample_input , Przykïadowe pole , smashing_sample_input_callback , smashings_settingsdemo , smashing_settings_section ); // Rejestracja ustawieĔ register_setting( smashings_settingsdemo , smashing_sample_input , smashing_settingsdemo_validate ); } // Inicjacja smashings_settingsdemo_init() w panelu administracyjnym add_action( admin_init , smashings_settingsdemo_init ); // Funkcja wykonywana na początku sekcji function smashing_settings_section_callback() { echo p Informacja na poczÈtku sekcji. /p ; } // Implementacja funkcji smashing_sample_input_callback() function smashing_sample_input_callback() { Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA // Opuszczamy PHP na moment ? input type= text name= smashing_sample_input value= ?php echo get_option( smashing_sample_input ); ? / ?php } // Powrót do PHP // Oczyszczanie function smashing_settingsdemo_validate($input) { // Kodowanie $newinput = esc_attr($input); return $newinput; } ? W ten sposób utworzyliśmy bardzo prostą stronę ustawień widoczną na rysunku 7.4. Za jej pomocą można zapisywać ustawienia w bazie danych. 209 Rysunek 7.4. Prosta strona ustawień z tekstem i polem tekstowym BAZA DANYCH A ODINSTALOWYWANIE WTYCZKI Tworząc wtyczkę przechowującą w bazie danych jakieś informacje, należy zastanowić się, co zrobić, gdy ktoś, kto ją zainstalował, zechce z niej po pewnym czasie zrezygnować. Czy wtyczka powinna po sobie sprzątać? W większości przypadków tak, zwłaszcza jeśli zapisała w bazie danych sporo informacji, które nie powinny tam zalegać bezużytecznie. Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA Jest kilka sposobów na usunięcie niepotrzebnych danych. Jednym z nich jest utworzenie pliku uninstall.php zawierającego kod usuwający z bazy danych treść, która została dodana tam przez wtyczkę: delete_option( my-data ); Powyższa instrukcja spowoduje usunięcie pola my-data z tabeli option bazy danych. Jako że wiele wtyczek zapisuje różne opcje w bazie danych, tabela ta szybko może stać się bardzo zabałaganiona, a to niczemu dobremu nie służy. Oczywiście w swoim pliku uninstall.php powinieneś zapisać własne instrukcje usuwające niepotrzebne dane. To samo dotyczy deinstalacji wykonywanych poprzez panel administracyjny. Oto przykładowa zawartość pliku uninstall.php: ?php // Dla starych wersji if ( !defined( WP_UNINSTALL_PLUGIN ) ) { exit(); } // Usuwanie danych opcji delete_option( myplugindata_post ); delete_option( myplugindata_feed ); ? 210 W pierwszej części skryptu sprawdzamy, czy funkcja deinstalacji jest dostępna. W starszych wersjach WordPressa nie było jej, a więc jeśli używasz systemu w wersji starszej niż 3.0 (choć nie powinieneś!), skrypt zakończy działanie, nic nie robiąc. Dzięki temu ten plik jest zgodny ze starszymi wersjami WordPressa. Pozostały kod służy do usuwania danych z bazy: myplugindata_post i myplugindata_feed. Instrukcje te są wykonywane podczas usuwania wtyczki z panelu administracyjnego, dzięki czemu po deinstalacji wtyczki baza danych jest od razu posprzątana. Ważne jest, aby pamiętać o zaimplementowaniu funkcji deinstalacji, jeśli wtyczka zapisuje cokolwiek w bazie danych. Można też pozwolić użytkownikowi wybrać, czy chce usunąć dane, czy woli je pozostawić, aby móc ich użyć w przyszłości. Dobrym pomysłem jest też usuwanie danych przy wyłączaniu, ponieważ zaleca się zrobienie tego dla wszystkich wtyczek podczas ręcznego uaktualniania WordPressa. PO DEINSTALACJI Łatwo jest zapomnieć, że po odinstalowaniu wtyczki w systemie mogą jeszcze być jakieś jej pozostałości. Dane w bazie danych to jedno (użytkownik powinien mieć przynajmniej możliwość wyboru, czy chce je usunąć), ale jest jeszcze jedna rzecz, która może być nawet bardziej kłopotliwa: tzw. skróty kodowe (ang. shortcode). Co się dzieje, gdy zostanie odinstalowana wtyczka tworząca skróty kodowe? Skróty kodowe to specjalne ciągi znaków, które powodują wyświetlenie treści we wpisie w miejscu, w którym zostaną umieszczone. Jednym z najczęściej używanych w WordPressie skrótów tego typu jest Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA [gallery]. Można go zobaczyć, gdy doda się galerię do wpisu, a następnie przełączy się edytor w tryb HTML. Co dzieje się ze skrótami wtyczki, gdy wtyczka ta zostanie odinstalowana? Nie zostaną przetworzone przez system jako skróty, tylko wyświetlone jak zwykły tekst. W tekście wówczas pojawią się napisy typu [mojshortcode]. To nie będzie dobrze wyglądać. Dlatego na wypadek gdyby wtyczka została wyłączona albo odinstalowana, powinniśmy udostępnić jakieś rozwiązanie kwestii skrótów kodowych. Rozwiązanie to musi umożliwiać użytkownikowi łatwe pozbycie się nieprzetwarzanych ciągów z tekstu wpisów. Jednym ze sposobów jest napisanie zapytania SQL po prostu usuwającego wszystkie wystąpienia danego skrótu, ale to jest dość drastyczne posunięcie i nie da się przewidzieć, co się stanie, gdy coś w trakcie procesu usuwania się nie powiedzie. W ten sposób można uszkodzić całą bazę danych. Poza tym nie wiadomo, czy z powodu błędu użytkownika wtyczka nie usunie za dużego fragmentu tekstu. Sposób radzenia sobie z niepotrzebnymi skrótami kodowymi zależy od sposobu działania wtyczki. Bardziej szczegółowo kwestią tą zajmuję się w rozdziale 8. Oczywiście nie z każdą wtyczką jest ten problem. Na przykład wtyczki tworzące tylko widżety nie są problematyczne, ponieważ po ich wyłączeniu widżety po prostu znikają. 211 WTYCZKI TWORZĄCE WIDŻETY Za pomocą widżetów można łatwo dostosować sposób wyświetlania treści w blogu lub witrynie. Widżety umieszcza się w specjalnie wyznaczonych do tego obszarach za pośrednictwem panelu administracyjnego. W WordPressie dostępnych jest kilka standardowych widżetów, np. wyświetlający kanały RSS, najnowsze wpisy, listę stron, listę kategorii itp. Funkcjonalność tych widżetów może być niewystarczająca dla użytkownika i dlatego tworząc wtyczkę, można dać użytkownikom możliwość skorzystania z niej także w formie widżetu. Jest to o wiele lepsze niż zmuszanie użytkownika do wpisywania tagów szablonowych w plikach PHP motywu. Jeżeli więc funkcjonalność Twojej wtyczki ku temu przemawia, warto umożliwić używanie jej jako widżetu. Tworzenie widżetów dla wtyczek nie jest trudne, głównie dzięki API widżetów, którego szczegółowy opis można znaleźć na stronie http://codex.wordpress.org/Widgets_API. Polega to na rozszerzeniu wbudowanej klasy WP_Widget, przekazaniu kilku instrukcji i zarejestrowaniu widżetu, aby mógł być wyświetlany, na przykład: class SmashingWidget extends WP_Widget { function SmashingWidget() { // Kod widĪetu } function widget( $args, $instance ) { // Zwrócenie treĞci widĪetu Poleć książkęKup książkę CZĘŚĆ III: WTYCZKI DO WORDPRESSA } function update( $new_instance, $old_instance ) { // Przetworzenie i zapisanie opcji widĪetu } function form( $instance ) { // WyĞwietlenie formularza opcji w panelu administracyjnym } } register_widget( SmashingWidget ); W tym przykładzie utworzyliśmy podklasę klasy WP_Widget o nazwie SmashingWidget. Pierwsza funkcja, function SmashingWidget(), zawiera rzeczywisty kod widżetu, a więc to ona jest odpowiedzialna za jego działanie. Funkcje widget(), update() i form() pozwalają sprawić, aby widżet zachowywał się tak, jak chcemy. Oczywiście widżet należy zarejestrować za pomocą funkcji register_widget(). Łącza Anuluj i Zapisz są wbudowane w API widżetów, a więc nie musimy implementować ich obsługi, aby użytkownik mógł zapisać lub anulować swoje ustawienia. 212 TWORZENIE WIDŻETU W tym podrozdziale przedstawiony jest krok po kroku proces tworzenia widżetu. Opisany tu widżet będzie wyświetlał tekst powitalny oraz będzie można zmienić jego tytuł w panelu administracyjnym: 1. Pamiętaj, że cały opisywany kod powinien znajdować się w pliku PHP wtyczki zawierającym nagłówek identyfikacyjny. Jeśli nie masz żadnej wtyczki, którą mógłbyś teraz rozbudować, utwórz nową. Zaczniemy od utworzenia klasy widżetu: class SmashingHello extends WP_Widget { Ten widżet będzie nazywał się SmashingHello, dzięki czemu od razu wiadomo, co prawdopodobnie będzie robił. 2. Następnie definiujemy funkcję widżetu: function SmashingHello() { parent::WP_Widget( false, $name = Witajcie, czeĂÊ i czoïem ); } 3. Do wykonania wielu czynności potrzebne są też funkcje widget(), update() i form(). Zaczniemy od definicji funkcji widget(): function widget($args, $instance) { extract( $args ); ? ?php echo $before_widget; ? ?php echo $before_title . $instance[ title ] . $after_title; ? CzeĂÊ! Czy to nie jest wspaniaïe? Poleć książkęKup książkę ROZDZIAŁ 7: ANATOMIA WTYCZKI DO WORDPRESSA ?php echo $after_widget; ? ?php } W funkcji tej pobieramy argumenty. Zwróć uwagę na ustawienia $before_widget, $after_widget, $before_title oraz $after_title. Nie należy ich zmieniać, jeśli nie jest to konieczne. Są one kontrolowane przez API widżetów i domyślne funkcje motywów i dzięki nim widżety dobrze wyglądają. Wartości zmiennych $before_widget i $before_title po prostu wysyłamy na wyjście, nie robiąc z nimi niczego szczególnego, a więc po prostu otrzymamy domyślny kod. Następna jest zmienna $instance reprezentująca tytuł widżetu, który użytkownik może wpisać w polu tekstowym dostępnym w panelu administracyjnym. Dalej znajduje się zmienna $after_title, a za nią tekst, który zostanie wyświetlony jako treść widżetu: Cześć! Czy to nie jest wspaniałe?. To jest oczywiście tylko przykład, więc nie ma tu żadnych fajerwerków, ale w tym miejscu możesz umieścić dowolny kod, choćby pętlę WordPressa. Na końcu widżet zamyka zmienna $after_widget. Przypomnę, że zmienne ze słowem before i after w nazwie umożliwiają zmuszenie widżetu do zachowywania się zgodnie z konstrukcją motywu. Jest to kwestia zależna od projektanta motywu, a więc jeśli chcesz, aby Twój widżet był prawidłowo wyświetlany we wszystkich motywach, pozostaw ustawienia domyślne. 4. Następnie trzeba zadbać o to, aby widżet był poprawnie zapisywany w przypadku aktualizacji: 213 function update($new_instance, $old_instance) { return $new_instance; } Funkcja update() pobiera tylko argumenty $new_instance i $old_instance. Oczywiście zwraca $new_instance, ponieważ jest to reprezentacja zmian. Jeśli obawiasz się nieprzyjaz
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Podręcznik WordPressa. Smashing Magazine
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: