Professional Documents
Culture Documents
Kandidat
Mentor
BORIS BURANJ
DR ZLATKO OVI
Predgovor
U ovom radu e se predstaviti jedna od najaktuelniji web tehnologija koja se moe upotrebiti za razne
namene u internet svetu i svetu komunikacije i informacije. Pored njegove jednostavnosti i upotrebe
idealan je za poetnike, ujedno i za eksperte. Zbog velike fleksibilnosti u svojoj pozadini nosi napredne
tehnike korienja koje se mogu prilagoavati zahtevima vieg nivoa. Jedna najaktuelnija i najtraenija od
tih tehnika e se predstaviti u ovom radu.
U poetku e se predstaviti njene osnove, karakteristike i neke korisne informacije za one koji se prvi put
susreu sa ovim. U narednim poglavljima e se ulaziti u sve dublje i naprednije tehnike njegove upotrebe.
Pre nego to se pone sa ulaenjem u ovu temu, da bi ona bila razumna, potrebno je poznavanje korienja
WordPress-a. Poeljno je, kada se pree jedna oblast, jo jednom utvrditi njeno poznavanje. Ovo je idealno
za one koji koriste i one koje bi eleli da koriste WordPress platformu. Ova tema e svima pomoi da proire
znanje i usavre korienje WordPress-a. Pored njegove upotrebe za ovu temu o kojoj emo govoriti,
takoe je potrebno i poznavanje HTML/CSS i osnovno znanje PHP-a. Za one koji nemaju minimalno
potrebno znanje to jo uvek nije prepreka. Sajt http://www.w3schools.com/ je topla preporuka gde e se
lako postii potrebno znanje HTML, CSS i PHP web programiranja.
Sadraj
Predgovor.........................................................................................................................................................2
Koriene skraenica.........................................................................................................................................5
Zadatak zavrnog rada......................................................................................................................................6
1. O WordPress-u..............................................................................................................................................7
1.1. WordPress sa sopstvenim hostingom:..................................................................................................7
1.2. Hostovan WordPress:...........................................................................................................................8
2. WordPress uporedo sa ostalim popularnim CMS reenjima.........................................................................9
3. WordPress mogunosti koje slue web dizajnerima i programerima..........................................................9
3.1. Sa strane web dizajnera.......................................................................................................................9
3.2. Sa strane programera..........................................................................................................................9
4. Struktura WordPress-a...............................................................................................................................10
4.1. Struktura administrativnog grafikog interfejsa.................................................................................10
4.2. Struktura direktorijuma.....................................................................................................................11
4.3. Struktura baze podataka....................................................................................................................11
5. WordPress ablon funkcije.........................................................................................................................15
5.1. PHP kd oznaka.................................................................................................................................15
5.2. WordPress funkcija ............................................................................................................................16
5.3. Opcioni parametri..............................................................................................................................16
6. Anatomija WordPress Teme......................................................................................................................17
6.1. Stilovi teme.........................................................................................................................................17
6.2. Funkcije teme ( function.php )............................................................................................................18
6.3. Fajlovi ablona....................................................................................................................................19
6.3.1. Osnovna lista fajlova ablona.....................................................................................................19
6.3.2. Osnove ablona za temu.............................................................................................................21
6.3.3. Prilagoeni ili sopstveni abloni za stranice................................................................................22
6.3.4. abloni bazirani na osnovu upita................................................................................................23
6.3.5. Ukljuivanje ablon fajla kao dela stranice.................................................................................25
6.4. Hijerarhija ablona teme.....................................................................................................................26
6.4.1. Primer princip funkcionisanja WordPress hijerarhije..................................................................26
6.4.2. Vizuelna predstava hijerarhije ablona teme..............................................................................27
6.4.3. Hijerarhija ablona teme u detaljima..........................................................................................30
Poetna strana (Home Page)...........................................................................................................30
Naslovna strana (Front Page)..........................................................................................................30
Pojedinani lanak (Single Post)......................................................................................................30
Strana (Page)...................................................................................................................................30
Kategorija (Categoy)........................................................................................................................31
Oznaka (Tag)....................................................................................................................................31
Prilagoene taksonomije (Custom Taxonomies).............................................................................31
Prilagoeni tipovi lanka (Custom Post Type).................................................................................31
Strana Autora (Author)....................................................................................................................32
Strana Datum (Date)........................................................................................................................32
Strana rezultata pretrage (Search)..................................................................................................32
404 (Nepostojea stranica)..............................................................................................................32
Prilozi (Attachment).........................................................................................................................32
6.5. Arhitektura teme...............................................................................................................................33
6.5.1. Vizuelna predstava arhitekture teme.........................................................................................33
Vizuelna predstava arhitekture teme..............................................................................................33
Poetna strana (index.php).............................................................................................................33
Anatomija WordPress Teme
lanci (single.php)...........................................................................................................................34
Stranice (page.php).........................................................................................................................34
Arhiva (archive.php, [category.php, tag.php]).................................................................................35
6.6. Petlje...................................................................................................................................................35
6.7. Proirenja, API (aplikacioni programski interfejs) kuke.......................................................................37
6.7.1. Prilagoavanje Teme API-a dodavanjem novih karakteristika....................................................37
Oblik lanka (post-formats).............................................................................................................38
Izdvojena slika lanka ili strane (post-thumbnails)..........................................................................38
Prilagoena pozadina (custom-background)...................................................................................40
Prilagoeno zaglavlje (custom-header)...........................................................................................41
RSS veze (automatic-feed-links)......................................................................................................43
6.8. Podaci koji nisu pouzdani i sigurnost teme, filtriranje podataka).......................................................44
6.9. Omoguavanje prevoenja tema na vie jezika / I18n.......................................................................44
6.10. Klase tema........................................................................................................................................45
body_class().....................................................................................................................................45
post_class()......................................................................................................................................46
comment_class().............................................................................................................................46
6.11. Dete Tema........................................................................................................................................47
6.11.1. Zbog ega koristiti dete temu...................................................................................................47
6.11.2. Kako se pravi dete tema?..........................................................................................................47
6.11.3. ablon datoteke dete teme......................................................................................................48
6.11.4. Funkcija dete teme...................................................................................................................48
6.11.5. Internacionalizacija dete teme.................................................................................................49
7. Vrednovanje za Anatomiju WordPress-a....................................................................................................49
7.1. Zakljuak.............................................................................................................................................49
Sinopsisi..........................................................................................................................................................51
Literatura........................................................................................................................................................52
Biografija.........................................................................................................................................................53
Prilozi..............................................................................................................................................................54
Koriene skraenica
Skraenica
Znaenje
API
CDN
CMS
CSS
HTML
I18n
PHP
RSS
URI
URL
XHTML
XML
MIME
Predstrava naina izmene WordPress teme drugih autora uz zadravanje originalne teme;
1. O WordPress-u
Poevi od perioda osnivanja prve zvanine verzije maja 2003, WordPress je postao izbor mnogih malih i
velikih potreba u poslovanju. U proteklih deset godina WordPress se pokazao kao jaka blog platforma. On
prua svestranu platformu koja raste uporedo sa rastom poslovanja kompanija. Kada je izala trea verzija
februara 2011. Procenjuje se da je WordPress preuzet sa interneta preko 32,5 miliona puta. U procenjenoj
cifri preuzimanja nije uraunat broj instalacija koje su obavljene preko web hostinga, cPanel-a.
U sutini WordPress je dvostran. Moe se koristiti kao blog platforma i ujedno odlian sistem za upravljanje
sadrajem (CMS eng. Content Management System). Prua mogunost da se od obinog blog reenja,
napravi sajt sa elektronskom trgovinom (E-commerce) to je nezamislivo za blog platformu.
U svetu korisnici upotrebljavaju WordPress na razliite naine:
za blog,
za mesto za trgovinu,
za takozvane Squeeze Page stranice koje prikupljaju e-mail adrese potencijalnim pretplatnicima,
kao forum,
multi sajt,
i socijalni sajt,
WordPress koristi kombinaciju prikaza lanaka (eng. Post) i stranica. Korisnicima prua mogunost
formiranja sadraja na svojim sajtovima.
lanci ili postovi se prikazuju hronolokim redosledom i obino se koriste kao tekstovi u blogu,
Stranice imaju svoju hijerarhiju i uglavnom se koriste za prikaz stranica sa statikim sadrajem. Neki
korisnici vie vole da grade svoj sajt korienjem samo stranica ili lanala, dok drugi vie vole
kombinaciju oba.
Na Internetu postoji dve osnovne vrste WordPress-a. Jedan je sa sopstvenim hostingom, drugi hostovan.
Prednosti:
Prednosti sopstveno hostovanog WordPress-a, preko hostinga gde se samofinansira su brojne i sve se svodi
na samokontrolu. Ovim putem se postie potpuna kontrola nad sopstvenim sadrajem, reklamiranjem i
samim izgledom sajta.
Mane:
Hosting se plaa,
Vlasnik sajta sam mora da nalazi reenja protiv neeljenih poruka takozvanih spamova,
Vlasnik sajta mora redovno da pravi periodine rezervne kopije sajta, to je i poeljno,
Vlasnik sajta mora da obavlja auriranje platforme, dodataka i proirenja koje je postavio.
Besplatan je,
Lako ga je podesiti,
Sva tehnika podeavanja, auriranje, upravljanje protiv neeljenih poruka, pravljenje periodinih
rezervnih kopija, obavlja WordPress.com,
Mogunost da se dobije vei promet sajta u sluaju ako se pojavi na njihovom zvaninom sajtu na
delu blogovi dana.
Nedostaci:
Uglavnom se veina kompanija odluuje da postavi svoje WordPress sajtove preko sopstvenog hosting-a
nego preko WordPress.com zbog nekoliko razloga:
1
2
Ova vrsta domena je besplatna ali postoji mogunost da domen bude bez .wordpress.com nastavka, koje se
posebno naplauje kao redovno registrovanje novog domena.
Postoje naprednije opcije, usluge, dodaci, izgled i naprednija podeavanja izgleda koje se naplauju.
Nemogunost brendiranja,
fleksibilnost izmene postojeih WordPress funkcija i ujedno dodavanje novih funkcija sa veoma
organizovanom i jasnom strukturom. Svaka izmena ili proirivanje obavlja se takozvano kukama eng.
hooks. O kukama e se detaljno govoriti u jednom od narednih poglavlja.
4. Struktura WordPress-a
4.1. Struktura administrativnog grafikog interfejsa
Pre nego to bi se ulo u detalje, prvo e se predstaviti sama struktura WordPress-a. Najbolja predstava je
vizuelna predstava.
Na slici 1 je predstavljen uredno organizovan
administrativni meni u tri mogua naina prikazivanja:
Trea grupa slui za podeavanje funkcionalnosti same WordPress platforme i njegova proirenja, kao to
su podeavanja izgleda, dodaci, korisnici, alatke.
etvrta grupa je namenjena za postavljanje drugih dodataka. Vidljiva je samo kada je neki dodatak
postavljen i aktiviran.
Sve navedene grupe su dostupne za izmenu,
proirivanje ili uklanjanje preko PHP koda,
upotrebom kuka.
Kod etvrte grupe administrativnog menija,
prostor koji je predvien za proirenja nije
striktno odreen da bude u etvrtoj grupi.
Instalacijom novih proirenja, meni stavke mogu
da se pojave u sve etiri oblasti administrativnog
menija.
10
11
Opis
wp_commentmeta
Relevantna oblast u
WordPress korisnikom
interfejsu
12
wp_comments
tabeli.
- Administracija Komentari
Komentari
- Administration Comments
Comments
- Administracija Komentari
Komentari
wp_links
wp_options
- Administration Settings
General
- Administration Settings
Writing
- Administration Settings
Reading
- Administration Settings
Discussion
- Administration Settings
Privacy
- Administration Settings
Permalinks
- Administration Appearance
Widgets
- Administracija Poseavanja
Opta
- Administracija Poseavanja
Pisanje
- Administracija Poseavanja
itanje
- Administracija Poseavanja
Diskusija
- Administracija Poseavanja
Privatnost
- Administracija Poseavanja
Stalne veze
- Administracija Izgled
Videti
wp_postmeta
wp_terms
14
Kategorije
- Administracija Veze
Kategorije veza
- Administracija lanci Dodaj
novi
- Administracija lanci Svi
lanci
- Administracija Strane Dodaj
novu
- Administracija Strane Sve
strane
wp_term_relationships
wp_term_taxonomy
wp_usermeta
wp_users
- Administration Users
- Administracija Korisinici
PHP kd oznake,
WordPress funkcije,
Opcioni parametri.
Kao to se vidi u gore navedenom primeru, sastoji od oznake otvaranja ili poetak PHP skripte <?php i
oznake zatvaranja ?> tj. kraj PHP skripte. Sve to se nalazi izmeu tih oznaka PHP kd se izvrava na
Anatomija WordPress Teme
15
Funkcija u ovom primeru prikazuje sam naslov lanka ili stranice. Da bi se ovo moglo upotrebiti i da bi
ablon bio kompletan funkcija treba da izgleda ovako:
<?php the_title(); ?>
U ovom sluaju dobijamo naziv web strane. Naziv web strane se nalazi u administrativnom delu kod opteg
podeavanja, naslova web mesta (blog title). Ako se postavi parametar 'description' dobijamo opis
sajta.
Postoje WordPress funkcije koje ne primaju parametre kao to je the_id(). Takoe postoje funkcije koje
primaju samo jedan parametar kao to je bloginfo() ili primaju vie parametara koji se razdvajaju
zarezima:
<?php the_title('<h3>', '</h3>', false); ?>
WordPress funkcije zavisno od njegove uloge primaju vie tipova parametara kao to su tekstualni koji su
ograeni apostrofima, numeriki, nizovi (array), i logiki (true, false).
Kao to se vidi WordPress ablonske funkcije su relativno jednostavne za shvatanje. Takoe su dobre za one
koji ne ele da ulaze u iru oblast mogunosti PHP-a. One zamenjuju veliki broj redova kda koje su
spakovane u jednu funkciju. Na ovaj nain dobijamo prednost u brzini izrade i preglednost kda. to se
tie nedostataka, moglo bi se rei da bi to bila ogranienost prilagoavanja funkcija. Mada se sa veim
znanjem PHP programiranja moe reiti i ovaj nedostatak. Funkcije se mogu u potpunosti zameniti sa
sopstvenim kdom kao i njegov unutranji kd.
Rezultati WordPress funkcija se mogu dobiti u tekstualnom formatu, numerikom, logikom, kao niz
(numeriki ili asocijativni), kao niz objekata ili mix objekata i nizova.
16
17
/*
Theme Name: Skolska tema
Theme URI: http://vts.su.ac.rs
Description: Skolski primer WordPress teme.
Author: bbokac
Author URI: http://wordpress.org/support/profile/bbokac
Version: 1.0
Tags: vts, skola, probna tema, diplomski rad, subotica
Kada zaglavlje teme malo bolje razmotri, moe se videti da je samoopisno. Ukratko objanjeno:
Version verzija,
License licenca,
Ukljuivanje teme funkcije kao to su sidebar, navigacioni meni, sliice za lanak, formati lanka,
prilagoavanje zaglavlja, prilagoavanje pozadine i ostalo.
Kreiranje meni stavke za podeavanje teme gde se mogu menjati boje, stilovi, tipovi slova i ostale
opcije podeavanja koje idu uz temu.
18
Zbog preglednosti i organizacije PHP kda, poeljno je da se sve nove funkcije stavljaju u functions.php. Te
funkcije u functions.php fajlu se odnose na samu temu, to znai da one prestaju raditi ako se aktivira druga
tema. Ako se eli da prilagoena funkcija bude nezavisna od teme onda ta funkcija mora da bude napisana
kao proirenje.
6.3.1.
Osnovna lista je lista fajlova ablona sa nazivima fajlova koje WordPress prepoznaje tokom inicijalizacije
WordPress platforme. Naravno ablon moe da ima razliite stilove, slike i skripte koji se mogu ukljuiti u
sistem ablona. Lista fajlova je bazirana na osnovu hijerarhije teme.
style.css Glavni stil teme.
Ovaj fajl je obavezan i mora da se sadri u temi. On sadri zaglavlje teme koje je spomenuto u poglavlju
stilovi teme.
rtl.css Rtl stil.
Ovaj stil je za jezike. Ima pravac pisanja sa desna na levo.
index.php Glavni ablon.
Ovaj fajl je obavezan ukoliko se pravi nova tema.
comments.php ablon za komentare.
front-page.php ablon prve poetne strane.
Ovaj ablon se upotrebljava kada se eli postaviti neka statina strana.
home.php ablon za tkzv. Home stranicu koja je podrazumevana poetna stranica. U sluaju ako se
Anatomija WordPress Teme
19
upotrebi front-page.php ablon onda e se ovaj ablon prikazivati kao blog strana i izlistae najnovije
lanke.
single.php ablon za pojedinano prikazivanje lanaka.
Ovaj ablon e WordPress upotrebljavati kada se obavi upit za pojedinano prikazivanje lanka. U sluaju da
ovaj fajl ne postoji upotrebie se index.php.
single-{post-type}.php ablon za prikazivanje prilagoenih tipova lanka.
Na primer imamo prilagoen tip lanka nazvan Beleke onda e ime fajla tog ablona biti singlebeleske.php. U sluaju odsustva ovog fajla podrazumevano se poziva index.php.
page.php ablon za prikazivanje stranica (pages).
category.php ablon za prikazivanje bilo koje kategorije.
On izlistava lanke koje se nalaze u odreenoj kategoriji.
tag.php ablon za prikazivanje na osnovu oznaka.
Izlistava lanke koji su pod odreenom oznakom.
taxonomy.php ablon za prikazivanje prilagoenih termina.
author.php ablon za prikazivanje lanaka koje je autor postavio i koji sadri informacije o autoru.
date.php ablon za prikazivanje lanaka po datumu i vremenu, po godini, mesecu, danu, satu, minutu i
sekundama.
archive.php ablon za prikazivanje arhive.
Ovaj ablon preuzima ulogu ablona za kategoriju (category.php), autora (author.php) ili datuma i vremena
(date.php) u sluaju da navedeni abloni nisu napravljeni.
search.php ablon za prikazivanje rezultata pretrage.
Koristi se kada se vri pretraga.
attachment.php ablon za prikazivanje priloga.
Koristi se kada se prilog prikazuje pojedinano.
20
6.3.2.
style.css
index.php
Oba fajla se moraju nalaziti u direktorijumu same teme. ablonski fajl index.php je veoma fleksibilan i koristi
se da bi se obuhvatili svi tipini delovi web stranice kao to su zaglavlje, sidebar, podnoje strane,
kategorije, arhive, pretrage i prikazivanje greaka bilo koje druge stranice koje su napravljene u WordPressu.
Takoe postoji modularna podela ablona. U sluaju da se ne upotrebe modularni fajlovi ablona,
WordPress e automatski primeniti svoje ablone. Na primer, postoji modularni fajl za komentare nazvan
comments.php i ako se taj modul ne primeni, WordPress e automatski primeniti svoju podrazumevanu
funkciju za prikazivanje komentara. Ovo je korisno ako se ele napraviti izmene, tj. ako se prilagoavanje
vri po sopstvenoj potrebi. Na ovaj nain izmene nekih funkcionalnosti WordPress-a su odvojene od samog
WordPress-a, gde dobijamo bolju preglednost a izmene su zatiene od gubitka tokom auriranja
WordPress platforme.
Tipini i najee upotrebljeni modularni fajlovi ablona su:
comments.php
comments-popup.php
footer.php
header.php
sidebar.php
searchform.php
Ovi moduli se mogu sastaviti u index.php fajlu preko WordPress ablonskih funkcija, koje e ukljuiti
navedene module i generisati finalnu HTML stranicu.
21
6.3.3.
Ovaj kd definie kontakt.php fajl kao Kontakt ablon i WordPress ga dodaje u listu za izbor ablona, u
delu osobine strane.
Nakon ovog kda se proizvoljno kodira sve to se eli. Na ovaj nain se moe izraditi ablon po sopstvenoj
elji. Takoe se mogu upotrebiti WordPress funkcije i sopstvene funkcije da se ne bi poinjao kodiranje od
nule. Na primer, moe se kopirati page.php, izmeniti tamo gde se ele izmene i ujedno e se zadrati i
22
6.3.4.
U samoj WordPress arhitekturi postoje rezervisana imena fajlova ablona i ona ine WordPress arhitekturu.
To su falovi koji su ve pomenuti u poglavlju lista fajlova ablona. Definisani fajlovi koji ine arhitekturu
WordPress-a su fajlovi koji preuzimaju funkciju index.php u odreenim tipovima upita. Na primer, ako se
zatrai prikazivanje stranica kategorije, i ako category.php fajl postoji, onda e taj fajl izvriti prikazivanje
umesto index.php-a. U suprotnom e se prikazivanje izvravati preko fajla index.php.
Ovo sve se konkretnije moe odraditi u hijerarhiji ablona preko
ablonskih fajlova. Svi lanci, stranice, kategorije i oznake koje se
prave u administrativnom delu imaju svoj identifikacioni broj, eng. ID
Identity. Mogue je napraviti ablon za konkretan upit, samo za
pojedinu kategoriju, lanak, stranu ili oznaku. Na primer ako imamo
kategoriju pod nazivom Studenti i dodeljen mu je identifikacioni
broj 3 moemo napraviti zaseban ablon za kategoriju studenti
imenovanjem category-3.php.
Umesto identifikacionih brojeva moe se primeniti podloak 3. U
prethodno navedenom primeru primena podloka bi izgledalo
category-studenti.php, gde se moe prepoznati da e se ovaj ablon izvravati onda kada se napravi upit
kategorije pod nazivom studenti.
Prednosti i mane vezivanja na osnovu identifikacionog broja:
Mana kod vezivanja ablona na osnovu identifikacionog broja je ako se broj jednom izbrie ne moe
se ponovo vratiti. Bez obzira ako se postavi potpuno identian sadraj WordPress e dodeliti drugi
identifikacioni broj.
Prednost vezivanja ablona na osnovu podloka je u tome da u sluaju brisanja lanaka ili stranice,
pravljenje novih pod istim imenom, podlok automatski primenjuje taj ablon.
Navedena prednost za sobom ujedno nosi i manu. Ako se ime podloka promeni, automatski se
gubi veza sa ablonom.
WordPress prua veoma veliku fleksibilnost upotrebe ablona, ak i do prefinjenih zahteva za razliite
situacije koje e se u detaljima predstaviti u narednom tekstu.
Pored ablona koji pruaju mogunost prilagoavanja pojedinanih tipova strana postoji mogunost
3
Podloak je lepa verzija URL-imena. Obino je napisano malim slovima i sadri samo slova, brojeve i crtice.
Podloci su takoe jedinstveni naliku su identifikacionim brojevima. Ovaj nain URL adresama prua lake
pamenje adresa i njihovo prepoznavanje.
23
prilagoavanje pojedinanih delova u ablonu. Kao to na primer imamo ablon koji ima prilagoen prikaz
za kategorije (category.php) i eli se samo na odreenu kategoriju, odreen deo ili cela stranica kategorije
drugaije prikazati. Ovakav rezultat se moe postii upotrebom WordPress-ovih uslovnih funkcija.
Karakteristian prikaz lanaka koji se nalaze u odreenoj kategoriji :
<?php
if ( is_category( '9' ) ) {
get_template_part( 'specifican-sablon' ); // prikaz sablona za clanke koje se
nalaze u kategoriji sa ID '9'.
} else {
get_template_part( 'obican-sablon' ); // prikaz sablona za sve ostale clanke.
}
?>
is_attachment()
is_feed()
has_tag()
is_author()
is_front_page()
has_term()
is_category()
is_home()
in_category()
is_child_theme()
is_month()
is_404()
is_comments_popup()
is_multi_author()
is_admin()
is_date()
is_multisite()
is_archive()
is_day()
is_main_site()
24
is_page()
is_single()
is_time()
is_page_template()
is_singular()
is_trackback()
is_paged()
is_sticky()
is_year()
is_preview()
is_super_admin()
pings_open()
is_rtl()
is_tag()
is_search()
is_tax()
Na osnovu odgovora da ili ne ovim funkcijama se moe ispitivati I odrediti dalji tok radnje. Veina
funkcija primaju argumente, tako da se ispitivanje moe precizirati. Vie detalja o svakoj funkciji se moe
nai u WordPress kodeksu uslovne oznake4.
6.3.5.
ablon se moe podeliti na delove. Na web stranicama postoje delovi koji se pojavljuju na pojedinim ili ak
na svim stranicama. Radi preglednosti i efikasnijeg pisanja kda preporuljivo je da se delovi odvoje u jedan
php ablon fajl. U tom ablon-fajlu izmena jednog fajla automatski e uticati na sve stranice u okviru
primene ovog dela.
Primer ukljuivanja dela ablona upotrebom WordPress funkcije:
<?php get_template_part( $podlozak, $ime ); ?>
Ovim jednostavnim kdom se ukljuuje php fajl nazvan {podlozak}-{ime}.php. Argument ove funkcije
podloak obavezan, a ime opciono.
Argument podloak je podrazumevan naziv dela ablona, a ime je naziv specijalizovanog ablona.
Pored toga da PHP jezik ima jednostavnu funkciju ukljuivanja PHP fajlova include(),
include_once(), require() i require_once(), WordPress funkcija get_template_part()
prua veu fleksibilnost u ukljuivanju ablon-fajlova. PHP funkcija za ukljuivanje fajlova mora biti
jednoznana i tano odreena, dok WordPress-ova funkcija ide po nivou prioriteta strukture naziva php
ablon fajlova koje postoje u temi. Ako ne postoji ni jedna od navedenih funkcija WordPress nee ukljuivati
nita i ii e dalje.
Nain rada ove funkcije najbolje e se shvatiti ovim primerom.
<?php get_template_part( 'sadrzaj', 'galerija' ); ?>
Ova funkcija e ukljuiti ablon koji e prikazivati sadraj tipa galerije, potraie ablon pod nazivom
sadrzaj-galerija.php i njega e prikazati. Na ovaj nai se mogu praviti segmenti stranice, koji se sa
get_template_part funkcijom ubacuju na bilo koje mesto. Jedan segment se moe upotrebiti na vie mesta.
Ova funkcija e traiti sledee nazive fajlova po prioritetu:
1. wp-content/themes/dete-tema/sadrzaj-galerija.php
2. wp-content/themes/tema/sadrzaj-galerija.php
3. wp-content/themes/dete-tema/sadrzaj.php
4. wp-content/themes/tema/sadrzaj.php
Kao to se vidi dete tema i fajl sadrzaj-galerija.php imaju najvei prioritet. Funkcija e ovim redosledom
4
http://codex.wordpress.org/Conditional_Tags
25
prioriteta potraiti ablon koji se eli ukljuivati. U sluaju da se prave izmene postojee teme, na ovaj nain
originalni fajl se moe zadrati i u koliko se napravi izmene u njegovoj kopiji bez da naprave ne povratne
izmene originalnog fajla.
Mogua je izvedba sa poddirektorijumom radi bolje preglednosti organizacije fajlova u temi. Delovi ablona
se mogu odvojiti u zaseban direktorijum. Na primer kreira se direktorijum sa nazivom segmenti i u tom
direktorijumu se nalazi sadrzaj-galerija.php. Ukljuivanjem ovog dela kd bi izgledao ovako:
<?php get_template_part( 'segmenti/sadrzaj', 'galerija' ); ?>
6.4.1.
26
2. U sluaju da statina strana nije napravljena, WordPress trai datoteku nazvana home.php.
3. Ako nedostaje datoteka home.php, onda se u direktorijumu aktivne teme prikazuje index.php.
6.4.2.
27
28
29
6.4.3.
U narednom tekstu e se predstaviti redosled primene ablona u zavisnosti od zahtevane stranice. Redosled
poinje od najvieg prioriteta ka najniem.
Strana (Page)
Upotrebljava se za prikaz statine strane.
1. prilagoen ablon fajl Ako je u odeljku stranica u administrativnom delu dodeljen ablon.
2. page-{podloak}.php na primer ako je stranica imenovana referenca onda e se upotrebiti
page-referenca.php ablon.
3. page-{id}.php gde je id je jedinstven broj stranice. Ako je na primer ID stranice 7 WordPress e
upotrebiti page-7.php ablon.
4. page.php
5. index.php
Anatomija WordPress Teme
30
Kategorija (Categoy)
Prikazuje listu arhive lanaka u odreenoj kategoriji.
1. category-{podloak}.php Na primer ako je ime kategorije voe onda e WordPress upotrebiti
category-voce.php ablon.
2. category-{id}.php Ako je jedinstven broj kategorije 3 onda e WordPress upotrebit category-3.php
ablon.
3. category.php
4. archive.php
5. index.php
Oznaka (Tag)
Prikazuje stranicu liste arhive oznaka.
1. tag-{podloak}.php Ako je oznaka imenovan zain onda e WordPress upotrebiti tag-zain.php
ablon.
2. tag-{id}.php Na primer ako je oznaci jedinstven broj 5 onda e WordPress prikazati tag-5.php
ablon.
3. tag.php
4. archive.php
5. index.php
31
Prilozi (Attachment)
Stranica koje prikazuje pojedinani prilog.
1. MIME_type.php Moe da bude bilo koji MIME tip (image.php, video.php, application.php). Za
obian tekst ide:
text.php
plain.php
text_plain.php
2. attachment.php
3. single-attachment.php
4. single.php
5. index.php
32
6.5.1.
Vizuelnom predstavom e se sve to je do sad bilo objanjeno prikazati u jednoj celini (slika 5).
33
lanci (single.php)
Na poetnoj stranici web strane, bloga, arhive ili na stranicama
gde se ukratko prikazuju lanci sadrana je veza ka
pojedinanom prikazu lanka, gde se prikazuje kompletan
tekst.
Stranica pojedinanog lanka se sastoji od stupca sa dodacima.
On se nalazi sa strane gde se mogu dodati detalji i veze ka
drugim arhivama, lancima i drugim delovima web strane.
Takoe se moe u potpunosti prilagoditi svojim potrebama.
Stranice (page.php)
Ovaj deo je namenjen za prikazivanje stranica web strane, koje
se takoe mogu u potpunosti prilagoavati po sopstvenoj
potrebi.
Mogu se dodavati i uklanjati elementi stranice kao to su stupci
sa strane sa proirenjima.
Pojedinane strane se mogu prilagoavati upotrebom
prilagoenih ablona. Oni se prave kopiranjem page.php
datoteke i proizvoljno preimenuju, iskljuujui nazive datoteka
koji su rezervisani i dodavanjem sledeeg koda na poetku u
sledeem prikazu:
34
<?php
/*
Template Name: Sablon za clanove
*/
?>
6.6. Petlje
Petlja (eng. Loop) je jedna od glavnih stvari u WordPress-u i WordPress temi. Ona poinje sa upitom, gde se
saznaje o kojoj stranici ili lanku je re. Sama petlja izlistava sadraj strane, lanka ili lanaka i arhive u
zavisnosti od toga ta je zatraeno.
Petlja poinje PHP kodom:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
i zavrava se:
<?php endwhile; else: ?>
<p><?php _e('Nema lanaka koji odgovaraju zatraenim kriterijumima!'); ?></p>
<?php endif; ?>
35
36
wp_head() - Postavlja se u <head> html elementu u header.php delu ablona teme. U ovom
sluaju proirenja mogu dodavati svoje JavaScript-e, kaskadne stilove (CSS) i izmene i dodavanje
html meta oznaka.
wp_footer() - Postavlja se u footer.php delu ablona teme pred kraj zatvaranja body html
oznake. Ovde se ubacuje sve to je potrebno da se nakon uitavanja cele strane obavi. esto se
ubacuje kd za analizu sajta, kao to je Google Analytics.
wp_meta() - Ree se koristi. Obino ide u <li>Meta</li> sekciju pored menija teme ili sa
strane stranice, sidebar.php ablon teme. Moe da sadri reklame, takozvane oblak oznake (eng.
Tag Cloud) ili neto prilagoeno za sopstvene potrebe.
comment_form() - Kuka koja uglavnom ide u comments.php datoteku. Ovde proirenja rade
eljene izmene u prikazivanju forme za pisanje novih komentara.
6.7.1.
Tokom razvoja WordPress-a mnoge stvari su se menjale i dodavale. Kako bi se zadrala kompatibilnost i
podrka starijim temama, WordPress je napravio novu funkciju kojom se naknadno mogu dodati nove
karakteristike. Na ovaj nain se WordPress moe nadograivati putem sigurnosnih zakrpa koje se
vremenom ispravljaju kako bi stara tema i dalje radila bez prekida.
Nove karakteristike tema se ukljuuju preko proirenja i preko same teme. Preporuljivo je da se kodira u
samoj temi, a ne kao proirenje. Dodavanje novih karakteristika se vri u functions.php funkciji teme.
Aktiviranjem novih karakteristika ili funkcionalnosti teme u administrativnom delu WordPress-a se
automatski pojavljuju nova podeavanja, koja su spremna za upotrebu.
Kd:
add_theme_support( $naziv-karakteristike, $argumenti );
post-formats
post-thumbnails
custom-background
custom-header
automatic-feed-links
37
add_theme_support( 'post-formats');
Ako se ele upotrebiti samo odreeni oblici lanka, onda se oni navode preko argumenta funkcije:
add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
Na primer, gore navedeni kd se upotrebljava u single.php, page.php ili nekom prilagoenom tipu lanka.
38
// Svugde
add_theme_support( 'post-thumbnails' );
// Samo lancima
add_theme_support( 'post-thumbnails', array( 'post' ) );
// Samo stranicama
add_theme_support( 'post-thumbnails', array( 'page' ) );
// lancima i Filmovima
add_theme_support( 'post-thumbnails', array( 'post', 'filmovi' ) );
39
Ukoliko se eli napraviti podrka starijoj verziji WordPress-a, moe se zasebno napraviti php funkcija koja e
obaviti identian zadatak. Proverom WordPress verzije moe se identifikovati i upotrebiti jedna od
odraenih karakteristika uz pomo koda:
Anatomija WordPress Teme
40
global $wp_version;
if ( version_compare( $wp_version, '3.4', '>=' ) )
add_theme_support( 'custom-background' );
else
add_custom_background( $args );
41
42
Kd aktivacije:
add_theme_support( 'custom-header' );
=> get_template_directory_uri() .
'random-default'
=> false,
'width'
=> 980,
'height'
=> 60,
'flex-height'
=> false,
'flex-width'
=> false,
=> true,
'uploads'
=> true
);
add_theme_support( 'custom-header', $ podrazumevano );
Za ovaj deo je takoe mogua podrka teme za starije verzije WordPress-a uz pomo koda:
global $wp_version;
if ( version_compare( $wp_version, '3.4', '>=' ) ) :
add_theme_support( 'custom-header' );
else :
add_custom_image_header( $wp_head_callback, $admin_head_callback );
endif;
43
esc_attr() - Pretvara HTML znakove <, >, &, " i ' u HTML entitete. Upotrebljava se za HTML
atribute kao to su alt, value, title...
44
add_action('after_setup_theme', 'podesavanja_teme');
function podesavanja_teme(){
load_theme_textdomain('vts-tema, get_template_directory() . '/languages');
}
Ovaj deo koda upuuje nas da e se prevod teksta nai u direktorijumu same teme u poddirektorijumu
languages, gde prevodioci mogu da prave prevode tekstova teme. Nazivi datoteka sa prevodima daju se po
jezicima, npr. za engleski ameriki jezik naziv datoteke e biti en_US.mo ili za srpski jezik sr_SR.mo.
Podeeni domen je nazvan vts-tema, kao primer koji e se kasnije upotrebiti.
Tokom izrade teme u svim datotekama gde se eli postaviti prevodivi tekst, statiki tekst se ubacuje u
WordPress-ovu funkciju koja e prevoditi na odreeni jezik, ukoliko je jezik podeen i ukoliko za njega
postoji prevod. Primer:
echo '<h2>' . __( 'Blog Options', 'vts-tema' ) . '</h2>';
Ukoliko nema prevoda za Blog Options tekst, prikazae ga podrazumevano na engleskom jeziku. U sluaju
da za njega ima prevod, da postoji sr_SR.mo datoteka i ako postoji podeavanje na srpski jezik onda e
prikazati njegov prevod npr. Blog Opcije. Ovo je prvi neophodni argument.
Drugi argument je domen. Domen slui za oznaavanje dela WordPress-a e se napraviti prevod. Domen
indetifikuje pripadnost prevedenog teksta temi, proirenju ili samom glavnom WordPress-u.
Postoje dve funkcije za prevod. Jedna je __('neki tekst', 'domen') vraa prevod kao vrednost
koje se nakon toga moe prikazati ili ga dodatno obraditi. Druga je _e('neki tekst', 'domen') i
ona prevodi i odmah prikazuje tekst. Primeri:
echo __( 'Using this option you will improve speed.', 'vts-tema' );
_e( 'Using this option you will improve speed.', 'vts-tema' );
6.10.
Klase tema
U sloenim web stranama koje sadre vie tipova strana tokom izrade kaskadnih stilova teme (CSS) moraju
se identifikovati pojedinani tipovi strane, u nekim sluajevima i pojedinane strane ili odreeni deo
pojedinane.
WordPress prua tu olakicu upotrebom sledeih funkcija:
body_class()
post_class()
comment_class()
U navedenim funkcijama koristi se po jedan argument, gde se mogu dodavati sopstvene klase ili niz klasa.
Izuzima se comment_class funkcije koja ima jo tri dodatna argumenta. Argumenti su opcioni.
body_class()
funkcija se postavlja u telo HTML-a <body>. Praktian primer:
45
Kao rezultat e biti prikaz nalik ovome. Meutim, sve varira u zavisnosti od tipova strana:
<body class="page page-id-2 page-parent page-template-default logged-in">
post_class()
Ima identinu funkcionalnost kao body_class(), samo to ova funkcija mora da bude unutar petlje koja
se odnosi na sam sadraj lanka ili stranice. Praktian primer:
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
comment_class()
Ima identinu funkcionalnost kao i prethodne dve funkcije, samo ova funkcija mora da bude unutar petlje
gde se izlistavaju pojedinani komentari koji pripadaju stranici ili lanku. Praktian primer:
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
46
6.11.
Dete Tema
WordPress dete tema je tema koja sve nasleuje od druge teme, zvane
roditelj tema. Dete tema dozvoljava menjanje ili dodavanje
funkcionalnosti roditelj teme bez izmene roditelj teme. Izrada dete
teme je najsigurniji nain vrenja izmena, dodavanja ili proirivanja
funkcionalnosti na originalnoj temi, a da roditelj tema bude netaknuta.
6.11.1.
6.11.2.
Postupak izrade dete teme je jednostavniji od izrade same teme. Prvo se kreira direktorijum gde e se
nalaziti datoteke za dete temu. Imenovanje direktorijuma je proizvoljno. Praksa je da se za imenovanje
direktorijuma dete teme dodeli isto ime kao roditelj tema koju e naslediti sa nastavkom imena -child ili
dete. Na primer, dete teme od twentytwelve roditelj teme bi se zvalo twentytwelve-child. Ovaj nain
imenovanja nije obavezan, samo je preporuljiv radi lakeg prepoznavanja.
Sledei korak, ujedno minimalno potreban korak da bi bila spremna spremna nova dete tema je da se u
novokreiranom direktorijumu kreira style.css datoteka sa sledeim potrebnim delom koda:
/*
Theme Name:
Theme URI:
http://www.vts.su.ac.rs/
Description:
Author:
Boris
Author URI:
http://buranj.elance.com
Template:
twentytwelve
Version:
0.1.0
*/
Na prvi pogled gore naveden kd izgleda identian nain kreiranja nove teme. Razlika je u Template:
twentytwelve gde je taj deo koda bitan. On govori WordPress-u ko je roditelj ove teme i koje e dete
tema da nasleuje. To je naziv direktorijuma roditelja teme i on mora da bude taan.
Nakon navedenog bloka koda u nastavku se dodaje:
Anatomija WordPress Teme
47
@import url("../twentytwelve/style.css");
6.11.3.
U prethodnom poglavlju je objanjeno kako se kreira dete tema i kako se moe izvriti izmena samog
izgleda teme bez ikakve izmene glavne takozvane roditelj teme.
Ako se eli izmeniti funkcionalnost ili neki deo ablona, takoe je izvodljivo. Da bi se ablon roditelj teme
mogao izmeniti, kopira se originalan ablon u direktorijum dete teme i vre se potrebne izmene. Na ovaj
nain e se presnimiti tj. upotrebiti izmenjeni ablon i ujedno e se zadrati originalna verzija.
Ako se eli napraviti izmena ablona koji nije upotrebljen u roditelj temi a da ne postoji datoteka, onda se
pravljenje nove datoteke radi na standardan nain i imenuje po WordPress hijerarhiji.
6.11.4.
Datoteka funkcije teme (function.php) se moe proirivati i menjati. Kreira se prazna funtction.php datoteka
u dete temi, kopira se funkcija sa roditelj (function.php) teme u dete temu gde se ta funkcija moe menjati.
Funkcije koje ne postoje u roditelj temi se prave na klasian nain kao kada se pie nova funkcija. Na
primer:
function favicon_link() {
echo '<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />' .
"\n";
}
add_action( 'wp_head', 'favicon_link' );
Kada se rade izmene i proirenja u ovoj oblasti roditelj teme treba biti vrlo oprezan, jer WordPress prvo
pokree function.php dete teme i nakon toga function.php roditelj teme. Treba imati na umu da je ovo PHP
programski jezik koji ne dozvoljava pisanje dve funkcije pod istim nazivom jer tako dolazi do greke. Da bi
roditelj tema bila proiriva za svaku napravljenu funkciju mora da bude proglaena uslovno (if). Na ovaj
nain se u dete temi mogu praviti izmene funkcije pod istim imenom. Roditelj tema je tako spremna, to se
moe proveri na sledei nain ukoliko je blok koda funkcije napisan nalik ovome:
if ( ! function_exists( 'neka_funkcija' ) ) {
function neka_funkcija() {
//
}
}
Kao to se vidi, roditelj tema e prvo proveriti da li je ta funkcije ve definisana u dete temi. Ukoliko je
napravljena izmena u dete temi onda e svoju funkciju preskoiti i upotrebiti funkciju od dete teme.
Anatomija WordPress Teme
48
6.11.5.
Dete tema se takoe moe pripremiti kao viejezina tema. Priprema se tako to se kreira novi
poddirektorijum gde se nalaze prevodi npr. languages i u functions.php dete temu se dodaje sledei blok
koda:
<?php
/**
* Aktivacija internacionaliyacije dete teme.
*/
function dete_tema_na_vise_jezika() {
load_child_theme_textdomain( 'dete-tema', get_stylesheet_directory() .
'/languages' );
}
add_action( 'after_setup_theme', 'dete_tema_na_vise_jezika' );
?>
Za prevoenje teksta u dete temi se upotrebljava definisan domen dete-tema po kome WordPress
prepoznati prevod dete teme i traiti ga u dete temi direktorijumu. Primer:
<?php
_e( 'Prikaz svih lanka autora:', 'dete-tema' );
?>
7.1. Zakljuak
Predstavljen je WordPress CMS sistem koji prua bru i efikasniju izradu sajtova. Za korisnike koji su ve
dobro uhodani u programiranju ovo je jedno od idealnih reenja kojim mogu sebi ubrzati proces izrade web
strane na zavidnom nivou. Korisnici koji se bave dizajnom mogu proiriti svoje usluge tj. osim dizajniranja
mogu samostalno pretvoriti svoj dizajn u potpuno funkcionalni dinamini sajt. Za poetnike je idealan da
naue i shvate jednu od naprednijih tehnika u Internet/Web tehnologiji i potpuno je besplatan. K d su pisali
programeri koji imaju veliko steeno iskustvo. Ujedno je podran i proveren od same zajednice i konstantno
se poboljava i unapreuje.
49
Sinopsisi
Anatomija WordPress teme
Ovaj projekat predstavlja jedan od popularnijih CMS sistema i njegovu napredniju upotrebu. Namenjen je
korisnicima koji ele da saznaju neto vie o WordPrewss-u a ne ele da se bave njime profesionalno kao I
za profesionalce. WordPress anatomija time upoznaje i predstavljanja strukturu, hierarhiju i nain izrade.
Cilj ovog projekta je da olaka rad svakom ko se ele predstaviti u dananjem modernom informacionom
svetu I da njihove usluge I informacije budu pristupane I profitabilne.
The WordPress theme anatomy
This project represents one of most popular CMS systems and their advance usage. This is usually for those
who want more but it is not their profession. But also for those who want to be professional in this area.
This WordPress anatomy project introduces structure, hierarchy and methods how to work with
WordPress. The main goal of this project is to guide in WordPress capabilites to can present your content
on Internet in easier way. To can give your services and info's more affordable to everyone and to be more
profatibile in modern communications.
WorldPress flptse
Ez a projekt bemutatja az egyik npszer CMS rendszert, s elrehaladott hasznlatt. Ez azon
felhasznlknak szl akik tbbet akarnak megtudni a WordPress-rl, de nem akarnak professzionlisan
foglalkozni vele, de a komoly felhasznlknak is. WorldPress felptse bemutatja strukturjt, hierarhijt
valamint kidolgozs mdjt. E projektum clja hogy megknnytse mindenki munkjt aki beakar
mutatkozni a mai modern informcis vilgban s bemutatsa szolgltatsait s hogy az informci
elrhet s jvedelmez legyen.
50
Literatura
[1] WordPress: The Missing Manual - O'Reilly Media - Matthew MacDonald - October 2012
[2] Digging Into WordPress - Chris Coyier & Jeff Starr 2009
[3] WordPress Codex - http://codex.wordpress.org/ - WordPress Foundation - Matt Mullenweg, Mike
Little, Mark Riley i Lorelle
51
Biografija
Buranj Boris je roen 20. Avgusta 1984. u Senti. Pohaao osnovnu kolu eh Karolj u Adi. Nakon toga
kolovanje nastavio u MC tehnikoj srednjoj koli u Adi, u struci Elektrotehniar pogona etvrtog stepena,
zatim struku nastavio u Vioj Tehnikoj koli strukovnih studija u Subotici, smer Elektronika sa
Telekomunikacijama. Poslednji ispit poloio 29. Decembra 2010.
52
Prilozi
tampani materijali:
Diplomski rad.
Elektronski materijali:
53