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.


Ankit manandgar
Wie kann ich Suchergebnisse nur nach dem Beitragstitel erhalten?
Anna
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?
Sparsh Goyal
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....
Azamat
Hallo,
Wie kann ich Suchergebnisse für bestimmte Beitragstypen UND bestimmte benutzerdefinierte Taxonomiebegriffe einschränken?
Steven
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’);
Greg
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’);
Jonathan Joosten
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’);
Dan Sz.
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.
Tadeu
Hallo, ist es möglich, die Suche nur auf Titel, Kategorie und Tags von Beiträgen zu beschränken?
Sandeep
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.
Jared
Nur eine Anmerkung dazu: Sie müssen $query nicht zurückgeben.
http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
Peter
Danke für den tollen Tipp!
WPBeginner-Mitarbeiter
Nick Die WordPress-Suchfunktionalität ist nicht so gut beim Finden von Inhalten.
Nick
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?
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
Wie kann man nach einer bestimmten Kategorie filtern? Danke
WPBeginner Support
Sam, bitte sehen Sie sich unseren Leitfaden an, wie Sie Taxonomie-Suchfilter in WordPress hinzufügen.
Admin
Hasan Gad Allah
Thank you , i was looking for that code (Y)
Felix
Es gibt ein Problem mit Ihrem Snippet:
Es begrenzt die Suchergebnisse im Backend, Sie sollten es umschließen mit:
if ( !is_admin() ) {
// snippet
}
bloggingfuture
Das ist ziemlich wertvoller Code für WordPress. Danke!
Alan Hughes
Wie wendet man das auf eine bestimmte Suchleiste an? Es wendet den Filter nicht einfach auf jede Suchleiste auf Ihrer Website an, oder?
goJohnnyGo
Haben Sie jemals herausgefunden, wie man dies auf bestimmte Suchfelder anwendet (nicht universell)?
Redaktion
Ja, wir haben hier einen Artikel:
https://www.wpbeginner.com/wp-tutorials/how-to-create-advanced-search-form-in-wordpress-for-custom-post-types/
Admin
scotte_sprott
Wie kann ich die Suchergebnisse so einschränken, dass nur Seiten angezeigt werden?
wpbeginner
@scotte_sprott Behalten Sie im Array einfach „page“ bei und entfernen Sie „posts“.