Hogyan tudok oldalak függvényében kikapcsolni bizonyos widgeteket? Hogyan tudok más és más oldalak esetén különböző widgeteket elhelyezni ugyanabba pozícióba? Mi van akkor, ha egy widgetet, csak a főoldalon szeretnék megjeleníteni, másutt viszont nem? Sokszor tették már fel nekem ezeket a kérdéseket és én magam is rengetegszer kerültem olyan helyzetbe, amikor bele kellett nyúlnom abba, hogy melyik widget mikor és hol jelenjen meg. A megoldás természetesen most is nagyon egyszerű, mégsem mindenkinek nyilvánvaló. Pár perces folyamat az egész és nekünk csak a Widget Logic bővítményre van szükségünk.
Na de mi is ez a Widget Logic és hogyan is működik?
A plugin telepítése után egy új beviteli mező jelenik meg minden egyes hozzáadott widgetünk alján a “Widget Logic” felirattal. Ide írhatjuk a WordPress által is támogatott kondicionális tageket, amelyek meg fogják határozni az adott widget viselkedését. Amilyen bonyolultan hangzik, annyira egyszerű a dolog, arra van csak szükség, hogy megkeressük, hogy az aktuális helyzetünkre melyik tag is vonatkozik.
Ha azt szeretnénk, hogy egy hozzáadott widget csak a főoldalon jelenjen meg akkor ennyit kell megadnunk: is_home()
Amennyiben a hozzáadás után nem történik változás cseréljük ki a következőre: is_front_page()
Attól függően működik egyik vagy másik, hogy blogbejegyzések vagy egy statikus oldal a kezdőlapunk.
Ha egy konkrét oldalon szeretnénk csak megjeleníteni a widgetet: is_page( ‘kapcsolat’ )
Természetesen cseréljük ki a “kapcsolat” részt a saját oldalunk hivatkozására. Mint ahogy a legtöbb, úgy a fenti kondíció is elfogadja az ID-t is (például: is_page( ’14’ ))
Több oldalon így tudjuk megjeleníteni a widgetet: is_page(array(12,16))
Vesszővel elválasztva az oldalak azonosítóit (ID) soroljuk fel.
Widget megjelenítése egy bejegyzés esetében: is_single(‘Hello-Vilag’)
A kategória oldalakon történő megjelenítést így állítjuk be: is_category( ‘alapismeretek’ )
Ha a cél az, hogy egy widget NE jelenjen meg egy bizonyos oldalon, akkor azt így érhetjük el: !is_page( ‘kapcsolat’ )
Ugyanígy alkalmazhatjuk a felkiáltójelet a többi szabály esetén is, ha szeretnénk megfordítani a dolgot.
Kombinálni a következőképpen tudunk: is_category( ‘alapismeretek’ ) || is_page( ‘kapcsolat’ )
Ebben az esetben a widget megjelenik az alapismeretek kategória és a kapcsolat oldal esetében is.
Természetesen a felsorolás még nem ér véget, temérdek további kondíció is van amik szerint megszabhatjuk a widgetek megjelenítését, ezeket érthetően és logikusan sorolja fel a fentebb linkelt WordPress Codex oldal.
UPDATE: Van egy némileg felhasználóbarátabb, könnyebben kezelhető (de kicsivel butább) alternatíva is ugyanerre a feladatra, ez pedig a “Display Widgets” névre hallgató bővítmény. Ha csak az a cél, hogy egyes oldalakon megjelenítsünk/elrejtsünk egyes widgeteket, akkor érdemes tenni ezzel is egy próbát.