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));