Selbst glühende Anhänger von WordPress müssen zugeben: die eingebaute Suche ist Mist. Niemand erwartet ausgefeilte Algorithmen wie bei Google. Wer eine komplexe Textsuche braucht, die auch PDFs einschließt, kommt an der benutzerdefinierten Suche von Google ohnehin kaum herum.
Aber leider erlauben die Bordmittel von WordPress noch nicht einmal Ausnahmen von der Suche. Bei einem Shop mit wpShopGermany werden dann leider auch die Produkte in der Suche angezeigt. In manchen Fällen mag das erwünscht sein. Wenn jedoch das Modul Produktartikel verwendet wird, muss dieser Custom Post Type ausgeschlossen werden. In den meisten Fällen wird die Formatierung der Exzerpte in der Suche nämlich nicht akzeptabel sein. Die Version 3.2.1 hätte dieses Problem eigentlich beseitigen sollen. Leider ist die Funktion noch nicht serienreif.
Zum Glück können wir die Sache mit einem kleinen Eingriff in die functions.php oder mit dem Plugin Code Snippets leicht korrigieren. Dazu müssen wir nur den folgenden Code einfügen.
function fb_search_filter($query) {
if ( !$query->is_admin && $query->is_search) {
$query->set('post_type', array('post') );
}
return $query;
}
add_filter( 'pre_get_posts', 'fb_search_filter' );
In diesem Fall beschränken wir die Suche auf WordPress Artikel ('post'). Wir können aber auch Seiten einbeziehen ('page') oder den Custom Post Type »Produkte« ('produkte'). Das Array hieße dann so.
function fb_search_filter($query) {
if ( !$query->is_admin && $query->is_search) {
$query->set('post_type', array('post', 'pages', 'produkte') );
}
return $query;
}
add_filter( 'pre_get_posts', 'fb_search_filter' );
Gegenüber vielen Plugins hat diese Methode den Vorteil, dass sie simpel ist und global auf den Post Type wirkt. Spätestens bei den Custom Post Types kommen viele Plugins aber an ihre Grenzen.