Tôi muốn biết làm thế nào tôi có thể viết lại một URL tìm kiếm cũng chứa một var truy vấn bổ sung vào một permalink đẹp bằng cách sử dụng wp_redirect
và template_redirect
hook.
Tôi đã lấy mã từ plugin Nice Search hoạt động tốt để thay đổi http://example.com?s=africa
thành 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();
}
}
Nhưng tôi đang sử dụng một danh sách thả xuống được chọn kết hợp với plugin Relevanssi để cho phép khách truy cập thu hẹp tìm kiếm vào một loại bài đăng cụ thể. Điều này thêm một post_type
var truy vấn, ví dụ http://example.com?s=africa&post_type=features
. Tôi muốn điều này để có một URL như thế nào http://example.com/search/africa/section/features
.
Mã Nice Search khiến var truy vấn post_type bị mất. Vì vậy, tôi đã thử đoạn mã sau:
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();
}
}
nhưng WordPress bây giờ nghĩ rằng thuật ngữ tìm kiếm là africa/section/features
.
Có cách nào để tôi có thể giữ cụm từ tìm kiếm và var truy vấn trong một permalink đẹp không?
Cảm ơn Simon