Smyčka (The Loop) ve WordPressu

Pokud si chcete vytvořit šablonu pro wordpress, se smyčkou se budete muset seznámit velmi důvěrně. Protože chystám seriál o tvorbě šablony a do ní se bližší informace o smyčce nehodí a zároveň bude následovat seriál o funkcích wordpressu využitelných v šablonách (víceméně se bude jednat o přeložené a mírně komentované informace z oficiálních stránek wordpressu, ale v češtině jsem tyto informace nikde neviděl a mám za to, že by to někomu mohlo pomoci), kde ovšem smyčku taky nechci dopodrobna popisovat, vyčlenil jsem tento drobný článek a uvedl ho již nyní. V závěru zde tedy bude celý návod nebo chcete-li postup, jak vyrobit šablonu pro wordpress.

Smyčka ve wordpressu slouží k zobrazovaní každého z uložených článků, je to tedy ten nejdůležitější prvek v celém systému – pokud tedy vaše stránky stavíte na kvalitních textech. Hned na začátek ukážu příklad jednoduché smyčky – převzato ze stránek wordpressu. Jedná se o jednoduchý index.php, kdy se celá stránka skládá z hlavičky, poté těla stránky tvořeného právě zmiňovanou smyčkou (v kódu je to vše mezi if a endif;), postranní lištou (nedávno jsem psal článek o tom, jak využít widgety ve wordpress šablonách, což se pro postranní lištu výborně hodí) a patičkou. Struktura je tedy velmi jednoduchá.

<?php
get_header();
if (have_posts()) :
   while (have_posts()) :
      the_post();
      the_content();
   endwhile;
endif;
get_sidebar();
get_footer(); 
?>

Pokud ovládáte alespoň základy programování, je vám jistě jasné, jak smyčka funguje. Celá by se dala interpretovat takto: Pokud existuje příspěvek (toto je v kódu položka if), tak začni vypisovat (toto je část kódu uvozená slovem while, tento cyklus končí, pokud se zjistí, že již neexistuje žádný další příspěvek) příspěvky v tomto tvaru (the_post();the_content(); – o těchto funkcích bude plánovaný seriál).

Jednoduché, že? Asi vás napadlo, že by šlo jistě využít konstrukce else nebo if-else a máte pravdu. Možnosti smyčky se nám rozšiřují.

<?php if (have_posts()) : ?>
...  
<?php else : ?>
<p>Nenalezen žádný článek.</p>
<?php endif; ?>

Ve výše ukázaném příkladě je vidět využítí else s možností vypsání alternativního textu v případě nenalezení ani jednoho článku k vypsání. Samozřejmě je možné místo vložení tagu <p> použít includování .php souboru nebo cokoliv jiného. Nutno ještě podotknout, že ve druhém případě byl každý řádek pro přehlednost zapsán mezi <?php ?>, což však není podmínkou, můžete si vybrat který zápis vám více vyhovuje (kombinovat mezi stylem prvního příkladu a druhého příkladu.

Složitější podmínky ve smyčce

Ukážeme si na jednoduchém příkladu s výpisem položek, který se bude lišit podle toho, ve které kategorii se nacházíme. Pokud pochopíte tento základ, nebude problém analogicky podmínky vytvářet pro konkrétní situace. Pro vytváření podmínek je důležité znát možnosti funkcí systému wordpress. V příkladu využiji pouze jednu – is_category(). Ta vrací true (tedy pravdivostní hodnotu), pokud zvolená kategorie souhlasí s číslem kategorie uvedeným v závorkách. Více o syntaxi a obecně funkcích ve wordpress tématech bude následovat nebo vyhledejte na webu. Příklad byl opět převzat z výše zmíněného webu.

<?php if (is_category('3') ):
 // we're in the Plants category, so show a plant ?>
 <img src='/images/plant.png' alt='a plant' />
<?php } elseif (is_category('4') ):
 // we're in the Flowers category, so show a flower ?>
 <img src='/images/flower.png' alt='a pretty flower' />
<?php endif; // end the if, no images for other other categories ?>

Zde je velmi jednoduše vidět, jak funguje if-else konstrukce. Pokud se nacházíme v kategorii 3, zobrazí se obrázek číslo jedna, pokud se nacházíme v kategorii 4, zobrazí se obrázek číslo dva. Snadné, že? Říkáte si, jak to souvisí se smyčkou? Tento kód můžete použít kdekoliv ve smyčce, ale když teď víte, jak používat podmínky, určitě pro vás nebude problém, použít je i přímo v kódu smyčky. Použiji opět první příklad a trochu ho upravím.

<?php
get_header();
if (have_posts()) :
   while (have_posts()) :
      if (is_category('4')) :
        the_post();
        the_content();
      else :
        ?>
        <p>libovolná akce když není příspěvek ze 4. kategorie</p>
        <?php
      endif;
   endwhile;
endif;
get_sidebar();
get_footer(); 
?>

Ve výše zmíněním příkladě vidíte, že ve smyčce je zabudovaná podmínka, která zajistí, že se zobrazí jenom články ze 4. kategorie a pokud článek není ze 4. kategorie, vypíše se odstavec (tag <p>) s informativním textem, což sice není asi zrovna v praxi použitelné, ale zase názorné. Pokud celou konstrukci else vynecháte, budou se vypisovat pouze příspěvky ze 4. kategorie a ostatní se prostě budou ignorovat.

To je o smyčce vše, co mi přišlo důležité. Doufám, že alespoň někomu tento článek pomůže a navnadil vás na chystanou sérii o tvorbě šablon pro wordpress.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *