Kdo trochu prochází web kvůli inspiraci, už jistě narazil na stránku, kde je místo klasického výpisu příspěvku s náhledovým obrázkem pouhý seznam článků s odkazem na jejich plný obsah. Většinou takovéto seznamy obsahují zcela všechny články, které projdou parametry zadání. Sám jsem chvíli hledal způsob, a až teď jsem našel čas, k tomu, abych vám popsal tento zcela primitivní úkon.
Jde o použití malého vylepšováku ke zrušení stránkování takovýchto seznamů, za použití „vlezu“ do funkce, která nosí informaci z databáze k nám na světlo, WP_Query. Pokud najdete v souboru archive.php (či category.php, author.php nebo v kterékoliv, který chcete upravit) šablony zápis funkce WP_query popřípadě query_posts, jste téměř za vodou, protože vám stačí přidat jen jeden parametr. Pokud však v šabloně nic takového není, bude potřeba to tam dodat.
Nejjednodušším (a profesionály velmi kritizovaným) způsobem zasáhnutí do této funkce, je použití query posts. Ta změní zadání pro celý cyklus, který následuje. Po použití musíte zavolat funkci, která odklidí nepořádek, wp_reset_query.
<?php //argumenty jako pole query_posts(array('argument'=>'hodnota','argument_2'=>'xxx')); //výpis dat = náš cyklus wp_reset_query(); ?>
Druhým, složitějším, ale o to účinnějším a (prý) bezpečnějším způsobem je přímé vyvolání třídy WP_Query. Parametry se tím vůbec nezmění,pouze použití je trochu odlišné, protože se postupem musí vyvolat k životu třída WP_Query.
<?php //argumenty jako text $query=new WP_Query('argument=hodnota&argument_2=xxx'); while($query->have_posts()): the_post(); //vypis endwhile; wp_reset_postdata(); ?>
Obě tyto funkce mají stejné parametry (argumenty – jak to prezentují v kodexu). Jejich úplný přehled najdete v kodexu na stránce věnované třídě WP_Query. V obou funkcích můžete parametry zadávat buď jako řetězec znaků (‚par1=nic&par2=534166‘), nebo jako pole hodnot (array(‚par1’=>1456,’par2’=>’nothing‘)). Pokud používáte WP_Query, při výpisu za použití FCe the_post(), je potřeba po uzavření cyklu spustit čistící akci wp_reset_postdata. Pokud postupujete s query_posts(), po konci cyklu nezapomeňte na použití wp_reset_query() :).
To by bylo k používání WP_Query asi všechno. Teď k tomu, jak provést dlouhý seznam. Pro toto má WordPress vše potřebné připraveno. Stačí pomocí výše zmíněných funkcí zajistit cyklus parametrem posts_per_page, který určuje maximální počet příspěvků nahuštěných na jedné stránce archivu. Pokud potřebujete přesně 9, napíšete 9. Pokud potřebujete všechny příspěvky ze systému, použijte -1
$query=new WP_Query('posts_per_page=-1'); while($query->have_posts()):$query->the_post(); //... //... //... wp_reset_postdata();