Chciałbym wiedzieć, w jaki sposób mogę przepisać wyszukiwany adres URL, który zawiera również dodatkową zmienną zapytania, w całkiem bezpośredni odnośnik wp_redirect
i template_redirect
zaczep.
Wziąłem kod z wtyczki Nice Search, która działa dobrze, aby zmienić http://example.com?s=africa
na 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();
}
}
Ale używam rozwijanego menu w połączeniu z wtyczką Relevanssi, aby umożliwić odwiedzającym zawęzić wyszukiwanie do określonego typu postów. To dodaje post_type
zapytanie var, np http://example.com?s=africa&post_type=features
. Chciałbym, aby ten adres URL był podobny http://example.com/search/africa/section/features
.
Kod Nice Search powoduje utratę zmiennej typu post_type. Więc wypróbowałem następujący kod:
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();
}
}
ale WordPress uważa teraz, że to wyszukiwane hasło africa/section/features
.
Czy istnieje sposób, aby zachować wyszukiwane hasło i zapytanie var wszystko w ładnym permalink?
Dzięki Simon