Wstęp do tworzenia pluginów Piotr Wasilewski wasilewski.piotrek (at) gmail.com Akademickie Stowarzyszenie Informatyczne www.asi.pwr.wroc.pl Wrocław, 14 kwietnia 2011
1 2 3 4
tworzyć własną wtyczkę Czego potrzebujemy? tworzyć własną wtyczkę... sprawdź, czy funkcjonalność której potrzebujesz nie kryje się w odmętach wnętrzności a jeżeli nie, to dokładnie przejrzyj dostępne pluginy może szukasz któregoś z nich a jeśli istnieje wtyczka która ma zbliżoną funkcjonalność, to może wystarczy ją rozbudować (kochamy Open Source!)
tworzyć własną wtyczkę Czego potrzebujemy? Czego potrzebujemy? przynajmniej podstawowa znajomość PHP (i ewentualnie MySQL) ustal nazwę dla swojego plugina powinna być unikatowa
Podstawowy szablon plugina Porządek w kodzie od samego początku Dostęp do bazy danych, tworzenie tabel Instalacja plugina Podstawowy szablon plugina 1 tworzymy katalog dla naszego plugina w wp-content/plugins/ 2 w katalogu zapisujemy plik *.php zawierający nagłówek: <?php / P l u g i n Name : Nazwa Twojej w t y c z k i P l u g i n URI : h t t p : / / a d r e s. s t r o n y. w t y c z k i. p l / D e s c r i p t i o n : Opis Twojego p l u g i n a V e r s i o n : 1. 3. 2 Author : Ty Author URI : h t t p : / / twoja. s t r o n a. p l L i c e n s e : GPL2 /?>
Podstawowy szablon plugina Porządek w kodzie od samego początku Dostęp do bazy danych, tworzenie tabel Instalacja plugina Nie ma jednego określonego sposobu tworzenia pluginów. Warto jednak trzymać się jakiegoś schematu. Ja najchętniej stosuję klasy: i f (! c l a s s e x i s t s ( MyPlugin ) ) { c l a s s MyPlugin { f u n c t i o n c o n s t r u c t ( ) { / Tutaj d e f i n i u j e m y w s z y s t k i e widgety, s t r o n y o p c j i, i n s t a l a c j e i t d. / / W s z y s t k i e p r z y d a n t e metody, c a l l b a c k i i t d. / / Nasze t e m p l a t e t a g i / g l o b a l $ m y p l u g i n ; $ m y p l u g i n = new MyPlugin ( )
Podstawowy szablon plugina Porządek w kodzie od samego początku Dostęp do bazy danych, tworzenie tabel Instalacja plugina Dostęp do bazy danych Klasa wpdb zapewnia nam proste API dla bazy danych g l o b a l $wpdb ; $wpdb >g e t r e s u l t s ( SELECT p o s t t i t l e, p o s t c o n t e n t FROM. $wpdb >p o s t s ) ; $wpdb >g e t v a r ( SELECT count ( ) FROM. $wpdb >p r e f i x. s o m e t a b l e ) ; $wpdb >update ( $wpdb >p r e f i x. t a b l e, a r r a y ( c o l 1 => $value1, c o l 2 => $ v a l u e 2 ), a r r a y ( i d => 69) ) ;...
Podstawowy szablon plugina Porządek w kodzie od samego początku Dostęp do bazy danych, tworzenie tabel Instalacja plugina Tworzenie tabeli g l o b a l $wpdb ; $ t a b l e n a m e = $wpdb >p r e f i x. m y t a b l e ; i f ( $wpdb >g e t v a r ( show t a b l e s l i k e $ t a b le name )!= $ t a b l e n a m e ) { $ s q l = CREATE TABLE. $ table name. ( i d mediumint ( 9 ) NOT NULL a u t o i n c r e m e n t, column 1 v a r c h a r (150) NOT NULL, column 2 t e x t, column 3 i n t DEFAULT 69, UNIQUE KEY i d ( i d ) ) ; ; r e q u i r e o n c e (ABSPATH. wp admin / i n c l u d e s / upgrade. php ) ; dbdelta ( $ s q l ) ;
Podstawowy szablon plugina Porządek w kodzie od samego początku Dostęp do bazy danych, tworzenie tabel Instalacja plugina Instalacja plugina W konstruktorze naszej klasy: r e g i s t e r a c t i v a t i o n h o o k ( F I L E, a r r a y ( $ t h i s, i n s t a l l f u n c ) ) ; Dodajemy metodę: f u n c t i o n i n s t a l l f u n c ( ) { / Wszystko, co chcemy wykonac podczas i n s t a l a c j i, na p r z y k l a d t w o r z e n i e t a b e l i. /
Shortcody Widgety Template tagi Strony opcji Hooki, akcje i filtry Shortcody Proste marka w stylu XML-a wykorzystywane do wstawiania lub modyfikowania treści stron. f u n c t i o n s h o r t c o d e ( $ a t t s, $ c o n t e n t=n u l l ) { e x t r a c t ( s h o r t c o d e a t t s ( a r r a y ( v a r => ), $ a t t s ) ) ; $html = ; i f ( $ v a r ) $html.= <p>p r z e k a z a l e s parametr :. $ v a r. </p> ; i f ( $ c o n t e n t!= ) $html.= <p>tresc :< br />. $ c o n t e n t. </p> ; i f ( $html == ) $html = <p>nie p r z e k a z a l e s parametru a n i t r e s c i </p> ; r e t u r n $html ;
Shortcody Widgety Template tagi Strony opcji Hooki, akcje i filtry Widgety r e g i s t e r s i d e b a r w i d g e t ( Simple w i d g e t, a r r a y ( $ t h i s, w i d g e t ) ) ;... f u n c t i o n w i d get ( $ a r g s ) { g l o b a l $wpdb ; e x t r a c t ( $ a r g s ) ; echo $ b e f o r e w i d g e t ; echo $ b e f o r e t i t l e. Simple w i d g e t. $ a f t e r t i t l e ; $my query = $wpdb >g e t r o w ( SELECT [... ] LIMIT 1 ) ; echo <p>r e s u l t s : [... ] </p> ; echo $ a f t e r w i d g e t ;
Shortcody Widgety Template tagi Strony opcji Hooki, akcje i filtry Template tagi W kodzie plugina: f u n c t i o n h e l l o w o r l d t a g ( ) { echo <h3>h e l l o, World!</h3> ; echo <p>oto p r z y k l a d o w y t e m p l a t e tag.</p> ; W szablonie: i f ( f u n c t i o n e x i s t s ( h e l l o w o r l d t a g ) ) { h e l l o w o r l d t a g ( ) ;
Shortcody Widgety Template tagi Strony opcji Hooki, akcje i filtry Strony opcji f u n c t i o n c o n s t r u c t ( ) { a d d a c t i o n ( admin menu, a r r a y ( $ t h i s, menu ) ) ; f u n c t i o n menu ( ) { add menu page ( Page T i t l e, Menu t i t l e, manage options, s l u g, a r r a y ( $ t h i s, menu page ) ) ; f u n c t i o n menu page ( ) { i f (! c u r r e n t u s e r c a n ( manage options ) ) { wp die ( ( You do not have [... ]. ) ) ; / Pokaz s t r o n e /
Shortcody Widgety Template tagi Strony opcji Hooki, akcje i filtry Hooki pozwalają nam wpiąć się w niemal każde miejsce a. Dzielimy je na: akcje (actions) są wywoływane na różnych etapach wykonywania funkcji jądra a filtry (filters) służą do modyfikowania treści generowanej przez a a d d f i l t e r ( t h e c o n t e n t, t h e c o n t e n t f i l t e r ) ; f u n c t i o n t h e c o n t e n t f i l t e r ( $ c o n t e n t ) { r e t u r n <s t r o n g >. $ c o n t e n t. </s t r o n g > ;
Pytania Koniec Dla kogo właściwie ten?
Pytania Koniec Pytania?
Pytania Koniec Dziękuję za uwagę!