Har du någonsin undrat hur du kan begränsa dina sökresultat till specifika inläggstyper? Det är inte särskilt svårt. Vi har redan visat dig hur du inaktiverar sökfunktionen i WordPress genom att modifiera functions.php-filen. Nu ska vi göra samma sak, förutom att filtrera våra sökresultat.
Öppna din functions.php-fil och lägg till följande kod:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('post','page'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
Lägg märke till raden som säger
$query->set('post_type',array('post','page'));
Du kan filtrera sökresultaten genom att ändra värdena i arrayvariabeln. Just nu är den inställd för att visa inlägg och sidor, men du kan ändra den för att visa vad du vill.

Ankit manandgar
hur kan jag få sökresultat endast enligt inläggstitel?
Anna
Tack för den här koden – den fungerade, även om du senast uppdaterade 2013! Mitt tema använder också en omedelbar sökning och jag skulle vilja begränsa resultaten där också. Hur skulle jag kunna göra det?
Sparsh Goyal
Mitt nuvarande tema visar inlägg med några inledande rader för söktermen/ordet. Jag vill anpassa det för att visa det stycke som innehåller söktermen/ordet i inläggets utdrag. Med andra ord, jag vill visa relaterad text i inläggets utdrag, inte det inledande stycket i sökresultaten. Kan någon hjälpa mig med detta....
Azamat
Hej,
Hur kan jag begränsa sökresultaten för specifika inläggstyper OCH specifika anpassade taxonomitermer?
Steven
Jag har en enkel funktion i min temas functions.php-fil, som bara ska filtrera inläggen efter en sökterm... när jag nu söker något, visas HTTP 500-felet "Webbplatsen kan inte visa sidan". Någon som har en idé om vad som är fel med min funktion?
function searchFilter($query) {
if ($query->is_search)
{
wp_reset_query();
$args = array ( ‘s’ => $_GET[‘s’] );
query_posts( $args );
}
}
add_filter(‘pre_get_posts’, ‘searchFilter’);
Greg
Detta begränsar alla sökformulär till den anpassade inläggstypen – inklusive mitt sidofältssökformulär, som behöver returnera alla resultat. Detta fungerar för mig:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
if(isset($_GET[‘post_type’])) {
$type = $_GET[‘post_type’];
if($type == ‘book’) {
$query->set(‘post_type’,array(‘book’));
}
}
}
return $query;
}
add_filter(‘pre_get_posts’,’searchfilter’);
Jonathan Joosten
Tack för hjälpen, jag förbättrade din kod så att folk bara kan söka tillåtna post_types.
function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $types = (array) $_GET[‘post_type’]; $allowed_types = get_post_types(array(‘public’ => true, ‘exclude_from_search’ => false)); foreach($types as $type) { if( in_array( $type, $allowed_types ) ) { $filter_type[] = $type; } } if(count($filter_type)) { $query->set(‘post_type’,$filter_type); } } } } add_filter(‘pre_get_posts’,’searchfilter’);
Dan Sz.
Hur implementeras detta? Om jag tolkar Gregs kommentar korrekt vill vi ha ett enda formulär som är begränsat till en inläggstyp, samtidigt som standard sökning behålls intakt för andra delar av webbplatsen.
Jag frågar för att en webbplats jag arbetar på behöver ett sökbart "resursbibliotek", som jag skulle vilja bygga ut utan att kompromissa med den normala sökfunktionaliteten.
Tadeu
Hej, är det möjligt att begränsa sökningen endast till titel, kategori och taggar för inlägg?
Sandeep
Hej,
Jag kan inte begränsa sidor i sökfiltret.
Jag behöver bara söka inom inlägg och inte sidor.
$query->set(‘post_type’,array(‘post’));
Detta visar även sidor.
Jared
Bara en notering att lägga till detta, du behöver inte returnera $query.
http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
Peter
Tack för det utmärkta tipset!
WPBeginner Staff
Nick WordPress-sökfunktionaliteten är inte så bra på att hitta innehåll.
Nick
Jag använde den här koden för att begränsa mina sökresultat till sidor, inte inlägg. Det fungerade i det avseendet, men det verkar bara söka i sidnamnen istället för innehållet. Om en användare till exempel söker på ”prissättning” kommer sidan Prissättning att vara ett resultat, men om de söker på ”pris” eller ”kostnad” (som båda är ord på sidan Prissättning) hittas inget. Saknar jag ett kodavsnitt?
emre
Hi,
I have a question and I couldn’t get a solution since last month.
I have lost of categories, pages and re-directions in my blog so my search box finds many unnecessary results when you try to search something. I want to customize my search.php for only categories part. In other words, we you search something, the results should be only from categories sections. So I will be get rid of redundant & duplicated results. My current codes are as below…Please help me
sam
Hur begränsar man efter specifik kategori? tack
WPBeginner Support
Sam, se vår guide om hur du lägger till taxonomisökfilter i WordPress.
Admin
Hasan Gad Allah
Thank you , i was looking for that code (Y)
Felix
Det finns ett problem med ditt utdrag:
Det begränsar sökresultaten i backend, du bör slå in det med:
if ( !is_admin() ) {
// snippet
}
bloggingfuture
Detta är ganska värdefull kod för WordPress. Tack!
Alan Hughes
Så hur skulle du tillämpa detta på en specifik sökfält? Det tillämpas inte bara filtret på varje sökfält på din webbplats, eller hur?
goJohnnyGo
Har du någonsin kommit på hur man tillämpar detta på specifika sökfält (inte universellt)?
Redaktionell personal
Ja, vi har en artikel här:
https://www.wpbeginner.com/wp-tutorials/how-to-create-advanced-search-form-in-wordpress-for-custom-post-types/
Admin
scotte_sprott
Hur kan jag begränsa sökresultaten till att bara visa sidor?
wpbeginner
@scotte_sprott I arrayen, behåll bara page och ta bort posts.