Saya ingin tahu bagaimana saya bisa menulis ulang URL pencarian yang juga berisi var permintaan tambahan menjadi permalink cantik yang digunakan wp_redirect
dan template_redirect
hook.
Saya telah mengambil kode dari plugin Nice Search yang berfungsi dengan baik untuk berubah http://example.com?s=africa
menjadi 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();
}
}
Tetapi saya menggunakan dropdown pilih dalam kombinasi dengan plugin Relevanssi untuk memungkinkan pengunjung mempersempit pencarian ke jenis posting tertentu. Ini menambahkan post_type
kueri var, mis http://example.com?s=africa&post_type=features
. Saya ingin ini memiliki URL seperti ini http://example.com/search/africa/section/features
.
Kode Nice Search menyebabkan var kueri post_type hilang. Jadi saya mencoba kode berikut:
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();
}
}
tetapi WordPress sekarang berpikir istilah pencariannya adalah africa/section/features
.
Apakah ada cara saya dapat menyimpan istilah pencarian dan var semua dalam permalink bagus?
Terima kasih Simon