Custom zoekresultaten in WordPress

24 feb. 2011 09:52 | Geplaatst door Marcel |

Binnen WordPress kun je een widget gebruiken om te zoeken binnen de website. Vaak zijn de standaard zoekresultaten in WordPress voldoende. Soms echter wil je de zoekopties verfijnen. Dit kan op een simpele manier door extra velden mee te geven in het formulier.

De functie get_search_form() heeft standaard als output in WordPress 3.0 het volgende:

<form role="search" method="get" id="searchform" action="/" >
<div><label class="screen-reader-text" for="s">Zoeken naar:</label>
<input type="text" value="zoektest" name="s" id="s" />
<input type="submit" id="searchsubmit" value="Zoeken" />
</div>
</form>

De enige variabele die hier meegegeven wordt is “s” met de waarde van de zoekopdracht, in dit geval “zoektest”. Je kunt echter vele verfijningen toevoegen. Bijv. dat in de resultaten alleen berichten worden weergegeven. Dit doe je met de volgende toevoeging:

<input type="hidden" value="post" name="post_type" id="post_type" />

Hier geven we de waarde “post” mee, oftewel alleen berichten. Standaard staat dit op “any”.
Zo zijn er veel toevoegingen. Met een var_dump() van het object $wp_query kun je aan het begin de standaardwaardes van alle zoekvariabelen zien. Met een var_dump() van $wp_query->query kun je de huidige query uitlezen.

Searchform.php

Je kunt dit geheel aan input-velden de standaard zoekfunctie maken door een searchform.php aan te maken in je theme map. De searchform.php kan er dan als volgt uitzien:

<form role="search" method="get" id="searchform" action="/" >
<div><label for="s">Zoeken naar:</label>
<input type="text" value="<?php the_search_query(); ?>" name="s" id="s" />
<input type="hidden" value="post" name="post_type" id="post_type" />
<input type="submit" id="searchsubmit" value=" " />
</div>
</form>

Iedere keer dat je nu de functie get_search_form() aanroept komt het juiste formulier tevoorschijn.