WordPress Such-URL ändern

Die Zeiten ändern sich.

Dieser Beitrag scheint älter als 12 Jahre zu sein – eine lange Zeit im Internet. Der Inhalt ist vielleicht veraltet.

WordPress sorgt dafür, wenn aktiviert, dass „schöne“ lesbare URLs genutzt werden. Lediglich die Suche ist davon bisher nicht betroffen; sie kommt mit der bekannten Syntax ?s im Standard aus. Aber auch hier kann man ansetzen und die URL seinen Bedürfnissen entsprechend anpassen.

Das folgenden Beispiel soll es verdeutlichen. Im Standard von WordPress, trotz aktiver Permalinks, sieht die URL zu den beiden Suchbegriffen wordpress und beratung wie folgt aus: bueltge.de/?s=wordpress+beratung&submit=Search. Mit Hilfe einer kleinen Funktion, die den Redirect anspricht, kann die URL angepasst werden. In meinem Fall, mit der zugehörigen nachfolgenden Funktion sieht die URL zu diesen beiden Suchbegriffen dann wie folgt aus: bueltge.de/search/wordpress+beratung.

Die Funktion, die ich einsetze, seht im folgenden Abschnitt. Innerhalb der WP-Funktion wp_redirct lege ich die Ausgabe fest, in dem ich den Begriff search zur home-url der Installation addiere und im Anschluss die Suchbegriffe ergänze. Dies kann man beliebig gestallten und je nach Anforderung so dass beste Ergebnis erziehlen.


function fb_change_search_url_rewrite() {
	if ( is_search() && ! empty( $_GET['s'] ) ) {
		wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' ) ) );
		exit();
	}	
}
add_action( 'template_redirect', 'fb_change_search_url_rewrite' );

Die Funktion legt man im besten Falle in einem Plugin ab oder alternativ in der functions.php des Themes. Schöne und verbesserte Lösungen sind wie immer willkommen und das Kommentarfeld steht dazu bereit.

Update
Aus den Kommentaren und Diskussionen ist ebenso eine Lösung entstanden, die explizit eine Lösung via Hook anspricht und so eine frei Benennung ohne Probleme zulässt; nicht desto trotz sollte man sich die Lösung via .htaccess überlegen.


function custom_search_url( $search_rewrite ) {

	if( ! is_array( $search_rewrite ) ) 
		return $search_rewrite;
	
	$new_array = array();
	foreach( $search_rewrite as $pattern => $s_query_string ) {
		$new_array[ str_replace( 'search/', 'my-search-url/', $pattern ) ] = $s_query_string;
	}
	$search_rewrite = $new_array;
	unset( $new_array );
	
	return $search_rewrite;
}
add_filter( 'search_rewrite_rules', 'custom_search_url' );

Von Frank Bültge

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.