Rozšířené vyhledávání v rubrikách

V rubrice: Tipy & Triky | Obtížnost:

WordPress sice v základním nastavení žádné rozšířené vyhledávání nemá, ale s pomocí několika chytrých funkcí můžeme tento nedostatek napravit. Zdrojový kód se bude skládat ze dvou částí – vyhledávacího formuláře a speciální šablony pro page, jež realizuje samotné vyhledávání.

Začneme formulářem:

<form action='<?php bloginfo('url') ?>/hledej' method='post'>
 <input type='checkbox' name='povidky'>Povídky
 <input type='checkbox' name='fejetony'>Fejetony
 <input type='checkbox' name='drabble'>Drabble
 <input type='submit' value='Hledat'>
</form>

Action odkazuje na url, kde bude umístěna vaše speciální vyhledávací stránka. Name u každého checkboxu je také názvem vyhledávané kategorie. Kód pro šablonu stránky vypadá takto:

/*
 * Template Name: Hledač
 */

$cat = '';

foreach ($_POST as $key => $val) {
    if ($val == 'on')
        $cat .= $key . ',';
}

$the_query = new WP_Query('category_name=' . $cat);

while ($the_query->have_posts()) : $the_query->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

Pokud uživatel zaškrtne políčka Povídky a Drabble, tak se uživatelovi ve výpisu zobrazí články z těchto dvou rubrik. Pokud byste chtěli spíše něco jako filtr, tedy, že se zobrazí příspěvky, které jsou v rubrice Povídky a zároveň Drabble, bude třeba několik částí upravit.

Už v samotném formuláři nemůžete uvádět názvy kategorií, ale jejich id. Změny na vyhledávací stránce vypadají takto:

foreach ($_POST as $key => $val) {
    if ($val == 'on')
        $cat[] = $key;
}

$the_query = new WP_Query(array('category__and' => $cat));
V rubrice: Tipy & Triky | Obtížnost: