Wp_redirect và gửi các biến


11

Làm cách nào để gửi một số biến với wp_redirect () từ tệp function.php trong thư mục chủ đề của tôi?

if ( $post_id ) {
    $variable_to_send = '1';
    wp_redirect( home_url(), $variable_to_send );
    exit;
}

Và trên trang chủ, tôi sẽ bắt biến trong điều kiện if-other để hiển thị một số xác nhận hay không tùy thuộc vào if $variable_to_send= '1' hay không.

Làm thế nào để làm điều đó trong WordPress?

Câu trả lời:


10

Tôi sợ rằng bạn không thể làm theo cách này.

wp_redirectlà một cách ưa thích để gửi tiêu đề Locationvà đối số thứ hai của hàm này là trạng thái yêu cầu và không phải là biến tùy chỉnh. (404, 301, 302, v.v.).

Bạn có thể gửi một số biến như nhận tham số. Vì vậy, bạn có thể làm một cái gì đó như thế này:

if ( $post_id ) {
        $variable_to_send = '1';
        wp_redirect( home_url() .'?my_variable='.$variable_to_send );
        exit;
}

Sau đó, bạn có thể sử dụng các biến này như $_GET['my_variable']hoặc đăng ký nó như là biến tùy chỉnh.


1
Bạn cũng có thể đặt một cookie, tôi cho rằng.
Ben Polinsky

Bạn cần sử dụng add_query_arg để thực hiện theo cách của WordPress.
Shivanand Sharma

@ShivanandSharma bạn có thể, nhưng không cần sử dụng add_query_arg để thêm chỉ một đối số vào URL mà không có bất kỳ đối số truy vấn nào khác.
Krzysiek Dróżdż

9

Đến bữa tiệc muộn với cái này, nhưng "cách Wordpress" để làm điều đó sẽ sử dụng add_query_arg như vậy:

if ( $post_id ) {
    wp_redirect( esc_url( add_query_arg( 'variable_to_send', '1', home_url() ) ) );
    exit;
}

Điều này sẽ bắt đầu chuyển hướng đến http://my.website/?variable_to_send=1 . Sau đó, bạn có thể nắm bắt biến, trên trang chủ (hoặc trang blog, tùy thuộc vào cách bạn home_url()thiết lập) bằng cách truy cập $_GET['variable_to_send']vào mã PHP của bạn.

Nếu bạn sẽ làm điều này trong functions.php , hãy đảm bảo móc vào inithoặc móc sớm tương tự nếu không bạn sẽ gặp lỗi "Tiêu đề đã được gửi".

Hy vọng rằng điều này sẽ giúp ai đó tình cờ tìm thấy bài viết này.


5
Nếu bạn đang chuyển hướng đến một địa chỉ địa phương, bạn nên sử dụng wp_safe_redirect().
Nathan Johnson
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.