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

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 tedy 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:

<?php
/*
* Template Name: Hledač
*/
?>
<?php
$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));