Ich würde gerne wissen, wie ich eine Such-URL, die auch eine zusätzliche Abfragevariable enthält, in einen hübschen Permalink mit wp_redirect
und den template_redirect
Hook umschreiben kann .
Ich habe den Code aus der genommen Nizza Search - Plugin , die feinen Änderungen arbeitet http://example.com?s=africa
in http://example.com/search/africa
:
add_action( 'template_redirect', 'my_rewrite' ) );
function my_rewrite() {
if ( is_search() and false === strpos( $_SERVER['REQUEST_URI'], '/search/' ) ) {
wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) );
exit();
}
}
Ich verwende jedoch ein ausgewähltes Dropdown-Menü in Kombination mit dem Relevanssi- Plugin, damit Besucher die Suche auf einen bestimmten Beitragstyp eingrenzen können . Dies fügt eine post_type
Abfragevariable hinzu , z http://example.com?s=africa&post_type=features
. Ich möchte, dass dies eine URL hat http://example.com/search/africa/section/features
.
Der Nice Search-Code führt dazu, dass die Abfragevariable post_type verloren geht. Also habe ich folgenden Code ausprobiert:
function my_rewrite() {
if ( is_search() and false === strpos( $_SERVER['REQUEST_URI'], '/search/' ) ) {
if ( isset( $_GET['post_type'] ) and '' !== $_GET['post_type'] ) {
wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) . '/section/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 'post_type' ) ) ) );
} else {
wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) );
}
exit();
}
}
aber WordPress denkt jetzt, dass der Suchbegriff ist africa/section/features
.
Gibt es eine Möglichkeit, den Suchbegriff und die Abfragevariable in einem schönen Permalink zu speichern?
Danke Simon