Užitečné pluginy, návody a šablony pro WordPress CMS

Problém s funkcí query_post při stránkování

Jestliže v šabloně z nějakých důvodů nevystačíme se standardním načtením článků pomocí konstrukce

if (have_posts()) : while (have_posts()) : the_post();

a potřebujeme využít funkci query_posts() například pro vyloučení některých kategorií, tagů, autora a podobně, typicky v podobě:

// výběr článků z vybraných rubrik
query_posts('cat=2,6,17,38');

// výběr článků patřících do několika rubrik současně
query_posts(array('category__and' => array(2,6)));

// výběr článků s vyloučením určité rubriky
query_posts('cat=-3');

Rychle zjistíme, že tento postup sice vede k cíli, nicméně přestane fungovat stránkování a tím i pluginy jako např. výborný WP-PageNavi.

Náprava je jednoduchá:

if (have_posts()):

// obnovíme parametr 'paged'
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("cat=-3&paged=$paged");

// a pak už pokračujeme standardním
while (have_posts()) : the_post();

Viz též Separatista nebo David Binda.

Properly using wp_reset_postda­ta(), wp_reset_query() and variable naming in queries »

How to fix pagination for custom loops »

OVX.cz 2003 | Přihlásit se
Bez cookies už dnes těžko provozovat plnohodnotný web. Setrváním zde tudíž vyjadřujete souhlas s jejich používáním. Více informací. | Zavřít.