Pålitliga WordPress-handledningar, när du behöver dem som mest.
Nybörjarguide till WordPress
WPB Cup
25 miljoner+
Webbplatser som använder våra plugins
16+
År av WordPress-erfarenhet
3000+
WordPress-handledningar
av experter

Hur man begränsar sökresultat för specifika inläggstyper i WordPress

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.

Upplysning: Vårt innehåll stöds av läsarna. Det innebär att om du klickar på några av våra länkar kan vi tjäna en provision. Se hur WPBeginner finansieras, varför det är viktigt och hur du kan stödja oss. Här är vår redaktionella process.

Det ultimata WordPress-verktyget

Få GRATIS tillgång till vår verktygslåda - en samling WordPress-relaterade produkter och resurser som alla proffs bör ha!

Läsarnas interaktioner

26 CommentsLeave a Reply

  1. 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?

  2. 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....

  3. Hej,

    Hur kan jag begränsa sökresultaten för specifika inläggstyper OCH specifika anpassade taxonomitermer?

  4. 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’);

  5. 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’);

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

      • 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.

  6. Hej, är det möjligt att begränsa sökningen endast till titel, kategori och taggar för inlägg?

  7. 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.

  8. 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?

  9. 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 :)

  10. 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
    }

  11. 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?

Lämna ett svar

Tack för att du väljer att lämna en kommentar. Tänk på att alla kommentarer modereras enligt vår kommentarspolicy, och din e-postadress kommer INTE att publiceras. Använd INTE nyckelord i namn fältet. Låt oss ha en personlig och meningsfull konversation.