Vertrauenswürdige WordPress-Tutorials, wenn Sie sie am dringendsten benötigen.
Anfängerleitfaden für WordPress
WPB Cup
25 Millionen+
Websites, die unsere Plugins verwenden
16+
Jahre WordPress-Erfahrung
3000+
WordPress-Tutorials von Experten

So begrenzen Sie Suchergebnisse für bestimmte Beitragstypen in WordPress

Haben Sie sich jemals gefragt, wie Sie Ihre Suchergebnisse auf bestimmte Beitragstypen beschränken können? Es ist nicht sehr schwer. Wir haben Ihnen bereits gezeigt, wie Sie die Suchfunktion in WordPress deaktivieren, indem Sie die functions.php-Datei ändern. Jetzt werden wir dasselbe tun, außer dass wir unsere Suchergebnisse filtern.

Öffnen Sie Ihre functions.php-Datei und fügen Sie den folgenden Code hinzu:

function searchfilter($query) {

    if ($query->is_search && !is_admin() ) {
        $query->set('post_type',array('post','page'));
    }

return $query;
}

add_filter('pre_get_posts','searchfilter');

Beachten Sie die Zeile, die besagt

$query->set('post_type',array('post','page'));

Sie können die Suchergebnisse filtern, indem Sie die Werte in der Array-Variable ändern. Derzeit ist sie so eingestellt, dass Beiträge und Seiten angezeigt werden, aber Sie können sie ändern, um alles anzuzeigen, was Sie möchten.

Offenlegung: Unsere Inhalte werden von unseren Lesern unterstützt. Das bedeutet, wenn Sie auf einige unserer Links klicken, können wir eine Provision verdienen. Sehen Sie wie WPBeginner finanziert wird, warum das wichtig ist und wie Sie uns unterstützen können. Hier ist unser Redaktionsprozess.

Das ultimative WordPress-Toolkit

Erhalten Sie KOSTENLOSEN Zugang zu unserem Toolkit – eine Sammlung von WordPress-bezogenen Produkten und Ressourcen, die jeder Profi haben sollte!

Leserinteraktionen

26 CommentsLeave a Reply

  1. Danke für diesen Code – er hat funktioniert, obwohl Sie ihn zuletzt 2013 aktualisiert haben! Mein Theme verwendet auch eine Sofortsuche und ich möchte die Ergebnisse dort ebenfalls einschränken. Wie könnte ich das tun?

  2. Mein aktuelles Theme zeigt Beiträge mit wenigen Anfangszeilen für den gesuchten Begriff/das gesuchte Wort. Ich möchte es so anpassen, dass der Absatz mit dem gesuchten Begriff/Wort im Beitrags-Excerpt angezeigt wird. Mit anderen Worten, ich möchte im Beitrags-Excerpt den relevanten Text und nicht den Anfangsparagraphen in den Suchergebnissen anzeigen. Kann mir jemand dabei helfen....

  3. Hallo,

    Wie kann ich Suchergebnisse für bestimmte Beitragstypen UND bestimmte benutzerdefinierte Taxonomiebegriffe einschränken?

  4. Ich habe eine einfache Funktion in der functions.php-Datei meines Themes, die nur die Beiträge nach einem Suchbegriff filtern sollte... Wenn ich jetzt etwas suche, erscheint der HTTP 500-Fehler „Die Webseite kann die Seite nicht anzeigen“. Hat jemand eine Idee, was mit meiner Funktion falsch ist?

    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. Dies beschränkt alle Suchformulare auf den benutzerdefinierten Beitragstyp – einschließlich meines Sidebar-Suchformulars, das alle Ergebnisse zurückgeben muss. Das funktioniert für mich:

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

    • Danke für die Hilfe, ich habe Ihren Code verbessert, damit Leute nur erlaubte post_types durchsuchen können.

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

      • Wie wird das implementiert? Wenn ich Gregs Kommentar richtig verstehe, wollen wir ein einzelnes Formular, das auf einen Beitragstyp beschränkt ist, während die Standard-Suche für andere Bereiche der Website intakt bleibt.

        Ich frage, weil eine Website, an der ich arbeite, eine durchsuchbare „Ressourcenbibliothek“ benötigt, die ich aufbauen möchte, ohne die normale Suchfunktionalität zu beeinträchtigen.

  6. Hallo,

    Ich kann keine Seiten im Suchfilter einschränken.
    Ich brauche nur die Suche in den Beiträgen und nicht in den Seiten.

    $query->set(‘post_type’,array(‘post’));
    Dies zeigt auch Seiten an.

  7. Ich habe diesen Code verwendet, um meine Suchergebnisse auf Seiten und nicht auf Beiträge zu beschränken. Das hat in dieser Hinsicht funktioniert, scheint aber nur die Seitennamen zu durchsuchen und nicht den Inhalt. Wenn ein Benutzer beispielsweise nach „pricing“ sucht, wird die Seite „Pricing“ als Ergebnis angezeigt, aber wenn er nach „price“ oder „cost“ sucht (beides Wörter auf der Seite „Pricing“), wird nichts gefunden. Fehlt mir ein Code-Schnipsel?

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

  9. Es gibt ein Problem mit Ihrem Snippet:

    Es begrenzt die Suchergebnisse im Backend, Sie sollten es umschließen mit:


    if ( !is_admin() ) {
    // snippet
    }

  10. Wie wendet man das auf eine bestimmte Suchleiste an? Es wendet den Filter nicht einfach auf jede Suchleiste auf Ihrer Website an, oder?

Hinterlasse eine Antwort

Vielen Dank, dass Sie einen Kommentar hinterlassen. Bitte beachten Sie, dass alle Kommentare gemäß unserer Kommentarrichtlinie moderiert werden und Ihre E-Mail-Adresse NICHT veröffentlicht wird. Bitte verwenden Sie KEINE Schlüsselwörter im Namensfeld. Führen wir ein persönliches und bedeutungsvolles Gespräch.