Ben de ekstra bir sorgu var kullanarak güzel bir kalıcı bağlantı wp_redirect
ve template_redirect
kanca içine bir arama URL'si yeniden yazmak nasıl bilmek istiyorum .
Ben değiştirmek için iyi çalışır Nice Search eklentisi kodu almış :http://example.com?s=africa
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();
}
}
Ancak , ziyaretçilerin aramayı belirli bir gönderi türüne daraltmasına izin vermek için Relevanssi eklentisi ile birlikte bir seçim açılır listesi kullanıyorum . Bu post_type
, örneğin bir sorgu var http://example.com?s=africa&post_type=features
. Bunun URL gibi bir şeye sahip olmasını istiyorum http://example.com/search/africa/section/features
.
Güzel Arama kodu, post_type sorgu değişkeninin kaybolmasına neden olur. Bu yüzden aşağıdaki kodu denedim:
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();
}
}
ancak WordPress artık arama teriminin olduğunu düşünüyor africa/section/features
.
Ben arama terimi ve sorgu var tüm güzel bir kalıcı bağlantı tutmak bir yolu var mı?
Teşekkürler Simon