WordPress hijerarhija i struktura

Sadržaj WordPress root foldera

Unutar root foldera se nalaze tri foldera:

  1. wp-admin je folder u kome se nalazi sve što vidite unutar administratorskog dela sajta. Ovaj deo će Vas interesovati samo u slučaju kada želite da modifikujete Admin panel.
  2. wp-content je folder kojim se nalaze folderi:
    • themes gde su smeštene sve instalirane teme bloga
    • plugins gde će biti smešteni svi dodaci koje imate na blogu
    • uploads folder u kome se čuvaju media fajlovi, slike…
  3. wp-includes je folder u kom se nalaze sve biblioteke i klase vezan za WordPress. Ovaj seo se još zove “jezgro WordPress-a” (engl. WordPress core).

wordpress instalacija

Pored prethodno nabrojanih foldera unutar root-a se nalaze i desetak fajlova, od kojih bih izdvojio samo wp-config.php

wp-config.php

To je fajl koji WordPress koji se pravi prilikom instaliranja WordPress-a sadrži parametre o bazi, username, password… U ovom fajlu se definiše prefix svih tabela baze, kao i jezik koji je aktivan na sajtu.

NAPOMENA:
Delovi wordpress-a koji su bitni pri premeštanju wordpressa su:

  1. wp_content folder
  2. wp_config.php fajl
  3. baza podataka

Sadržaj teme

U zavisnosti od komplikovanosti teme, tema može da sadrži veliki broj fajlova ali da bi postojala mora da ima: index.php i style.css

style.css

Style.css se mora zvati style.css i mora da se nalazi u root folderu vaše WordPress teme. Na samom početku fajla se nalaze osnovne informacije o temi u komentarisanom bloku koji izgleda slično ovome:

Posle ovoga bloka može se ugraditi CSS kod koji stilizuje naše stranice, mada taj deo koda i ne mora biti smešten tu već se može nalaziti u drugom fajl-u.

functions.php

U ovom fajlu se nalaze specifične funkcije teme koje se aktiviraju uglavnom preko udica. Functions.php se ponaša kao plugin (srp.dodatak) koji dodaje osobine i funkcionalnosti temi.

Neki standardni početni setup teme je prikazan u sledećem primeru:

NAPOMENA:
Fajl functions.php iz child teme i plugina se učitava pre istog fajla u parent temi. Iako se učitavaju ranije oni NE “GAZE” functions.php fajl u parent temi već dodaju nove funkcionalnosti ili mogu da menjaju neku custom funkciju (ako postoji filter-udica unutar functions.php parent teme). Ne sme postojati custom funkcija sa istim imenom u child i u parent temi a koja se nalazi u ovom fajlu jer to dovodi do greške !!! Jedina mogućnost kada je dozvoljeno imati funkciju sa istim imenom u child temi i u parent temi (koja će “pregaziti” matičnu funkciju) je ako je funkcija unutar parent functions.php plugbilna (eng. pluggable). Isto važi i za plugin i parent temu.

Šabloni

Pored ovih prethodno pomenutih obaveznih fajlova, u zavisnosti od teme do teme možete naći i sledeće fajl-ove:

index.php

Ovaj fajl je najopštiji šablon, često se koristi kao početna stranica gde se listaju svi članci ako drugačije nije postavljeno. U WordPress hijerarhiji ovaj fajl je na vrhu piramide. Što je objašnjeno na sledećim primerima:

  • Posetilac želi da ode na početnu stranu, WordPress će prvo potražiti fajl home.php i ukoliko ga pronađe, izvršiće njega. Ukoliko ne, pozvaće fajl index.php.
  • Kada bi posetilac kliknuo na “About” stranu, WordPress će prepoznati da se zahteva stranicaa ne post i prvo će pokušati da prikaže page.php template, ali ukoliko ga ne pronađe, otvoriće index.php.

Isti princip važi i za ostale strane, blog
postove, kategorije, 404 str i slično…

Šabloni prvog reda

Ovoj grupaciji pripadaju šabloni “najbliži” index.php. Ovi šabloni bi trebali da postoje u svakoj ozbiljnijoj temi.

  • singular.php
    Ovaj šablon se koristi se od verzije WP 4.3. i prikazuje samo jedan post-tip , a glavni podšabloni su:

    • page.php – šablon koji prikazuje jednu “statičnu” stranicu
    • single.php – šablon koji prikazuje samo jedan “post”.
  • blog.php – šablon koji će hronološki prikazati sve postove
  • archive.php – prikazuje listu članaka arhiviranu po nekom uslovu. Ako nema specifičniji šablon prikazuje sve člankove neke kategorije ili iz nekog vremenskog perioda ili …
  • home.php
  • 404.php – šablon koji će prikazati error 404 stranicu tj. stranicu u slučaju da posetilac pokušava da otvori stranu koja ne postoji
  • search.php – šablon koji će prikazati sve postove koje zadovoljavaju pretragu po nekom uslovu

Specifičniji šabloni

  • author.php – šablon koji će prikazati sve postove od jednog autora po hronološkom redu
  • category.php – šablon koji će prikazati sve postove unutar neke određene kategorije
  • tag.php – šablon koji će prikazati sve postove sa istim tagom
  • taxonomy.php – šablon koji će prikazati sve postove unutar neke custom taksonomije (npr. žanr)
  • date.php – šablon koji će prikazati sve postove iz nekog perioda

Najspecifičniji šabloni

  • autor-$nicename.php – šablon koji će prikazati sve postove samo od specifičnog autora. Taj autor se definiše prema “nicename”
  • category-$slug.php – šablon koji će prikazati sve postove samo unutar specifične kategorije. Ta kategorija se definiše sa svojim $slug
  • taxonomy-$taxonomy.php – šablon koji će prikazati sve postove samo unutar specifične custom taksonomije. Ta custom taksonomija se definiše sa svojim imenom.
  • archive-$posttype.php – šablon koji će prikazati sve postovesamo unutar specifičnog custom post tipa. Ta tip se definiše sa svojim imenom.
  • front-page.php – prikazuje samo početnu stranu, ne bitno da li je to statična ili blog stranica (to se odredjuje u Settings/Readings)
  • page-$slug.php – šablon koji prikazuje samo jednu specifičnu statičnu stranicu a koja je definisana svojim slug-om

Page template

page_templates

Ovo nisu “klasični šabloni” jer se koriste samo ako to korisnik naglasi u admin stranici u okviru Page Attributes/Template polja. Ovi šabloni se prave sa namenom da se koriste za više različitih statičnih stranica a koje treba da imaju isti dizajn.

Po organizaciji fajlova u WordPress-u ovi fajlovi se čuvaju u folderu pod nazivom “page-templates”. Ne postoji princip za pravljenje naziva ovih fajlova. Nazivi šablona koji se pojavljuju korisniku u admin prozoru su zapisani unutar page template fajlova kao komentar na samom početku. Stoga nazivi samih page template fajlova nemaju neki značaj osim za jednostavno prepoznavanje fajla. Komentar sa nazivom page šablona mora da izgleda slično narednom primeru:

Ove šablone programer ne treba da pravi ukoliko se koriste za prikaz samo jedne karakteristične stranice (npr. stranice kontakt). U tom slučaju praviti “najspecifičniji” šablon za stranice page-$slug.php (page-kontakt.php).

Delovi koda – partials

Da bi poboljšali preglednost i sprečili ponavljanje koda izdvojeni su delovi koji se pojavljuju unutar više šablona. Ovi fajlovi se naknadno include-uju.

  • header.php – sadrži delove teme kao što je npr. navigacija, logo i
    slika na vrhu teme
  • content.php – sadrži kod (loop) zadužen za prikazivanje sadržaja
  • sidebar.php – sadrži strukturu sidebar-a koji se koristi u temi
  • footer.php – sadrži delove teme koji se ponavljaju u podnožju teme
  • comments.php – sadrži strukturu komentara koji se dodaju svakom članku ili
    stranici gdje su omogućeni komentari i može sadržati formu za slanje novog komentara

WordPress hijerarhija

WordPress tema se sastoji od više šablona stranica. Šabloni su u medjusobnom hijerarhiskom odnosu a wordpress hijerarhija je ugradjena u sam softver. Radi boljeg razumevanja WP hijerarhije pogledajte sliku pored ili još bolji prikaz problema posetite http://wphierarchy.com/


wordpress hijerarhija

wordpress hijerarhija ×

Suština hijerarhije se zasniva na principu: “od specifičnog ka opštem”, tj. kada WordPress treba da učita neku stranicu on će potražiti najspecifičniji šablon, a ako ga nema onda će potražiti prvi sledeći manje specifičan i tako dalje … sve do najopštije teme index.php.

Proces “razmišljanja” softvera dok traži šablon da prikaže neki članak je sledeći:

  • prepoznaje da se radi o stranici koja prikazuje samo sadržaj jednog posta ili stranice
  • prepoznaje da se radi o stranici koja prikazuje samo sadržaj jednog posta
  • pregleda koji tip članka
  • Ukoliko je članak tipa “post”, pregleda se folder za datotekom single-post.php
  • Ukoliko nije pronađena neka od spomenutih datoteka pregleda se folder za datotekom single.php
  • Ukoliko nema ni single.php, koristi se index.php

ali ako je članak “Custom Post Type” onda…

  • pregleda se folder za datotekom single-auto.php (ukoliko bi naš custom post type
    bio auto).
  • Ukoliko nije pronađena neka od spomenutih datoteka pregleda se folder za datotekom single.php
  • Ukoliko nema ni single.php, koristi se index.php

ili za nijansu drugačiji primer ukoliko je to članak nekog priloga kao npr. upload-ovane slike:

  • tada se pregleda folder za datotekom
    image.php ukoliko je to datoteka tipa image, zatim ako je nema gleda za
    png.php ako je slika u formatu .png, a nakon toga gleda ako postoji
    image_png.php datoteka. Ukoliko nema niti jedne od tih datoteka gleda attachment.php
  • Ukoliko nije pronađena neka od spomenutih datoteka pregleda se folder za datotekom single.php
  • Ukoliko nema ni single.php, koristi se index.php

PREPORUKE:

  • Koristite šablon front-page.php za glavnu stranicu – ne page template ili index.php
  • Koristite šablone category.php ili tag.php ili search.php umesto archive.php
  • Koristite page-$slug šablone – kada imate unikatnu statičnu stranu kao kontakt (sa embedovanom mapom), stranicu za reference (sa galerijom slika)…

Više o ovome možete pogledati ovde.