Cách chuyển hướng đến bài viết nếu kết quả tìm kiếm chỉ trả về một bài


7

Tôi muốn gửi khách truy cập đến search.php của tôi sau khi tìm kiếm để hiển thị danh sách các bài đăng. Nếu chỉ có một kết quả tìm kiếm, người dùng có thể trực tiếp đến bài đăng được đề cập (một cái gì đó giống như Nút may mắn của tôi là GOOGLE)

Cảm ơn tất cả.

Câu trả lời:


11

Thêm đoạn mã này vào hàm.php của bạn

function redirect_the_single_post() {
    if (is_search() && is_main_query()) {
        global $wp_query;
        if ($wp_query->post_count == 1 && $wp_query->max_num_pages == 1) {
            wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
            exit;
        }
    }
} 
add_action('template_redirect', 'redirect_the_single_post' );

Hy vọng điều này sẽ giúp bạn!!


5
+1 cho điều này. Tuy nhiên, bạn cũng có thể / nên kiểm tra xem đây có phải là truy vấn chính hay không, vì vậy tôi sẽ thay đổi dòng đầu tiên thành : if (is_search() && is_main_query()) {. Và permalink cũng có thể được tạo ra $GLOBALS['post']->ID- nhưng nó không quá ngắn. ;) Nhưng đó là về việc lấy một thuộc tính của một phần tử của một mảng. Mã của bạn là về việc lấy một thuộc tính của một phần tử của một mảng, là thuộc tính của một đối tượng khác.
tfrommen

1
@AbhishekKaushik, lấy điểm và thêm nó vào Câu trả lời. Mọi người sẽ sao chép / dán đoạn trích của bạn trong nhiều năm tới, cải thiện nó tốt hơn, phải không? ;)
brasofilo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.