Wp_redirect dan mengirim variabel

12

Bagaimana cara mengirim beberapa variabel dengan wp_redirect () dari file function.php di folder tema saya?

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

Dan di beranda saya akan menangkap variabel dalam kondisi if-else untuk menunjukkan konfirmasi atau tidak, tergantung apakah $variable_to_send= '1' atau tidak.

Bagaimana cara melakukannya di WordPress?

Derfder
sumber

Jawaban:

10

Saya khawatir Anda tidak bisa melakukannya dengan cara ini.

wp_redirectadalah cara mewah untuk mengirim tajuk Locationdan argumen kedua dari fungsi ini adalah status permintaan, dan bukan variabel khusus. (404, 301, 302, dan seterusnya).

Anda dapat mengirim beberapa variabel sebagai parameter. Jadi Anda dapat melakukan sesuatu seperti ini:

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

Kemudian Anda dapat menggunakan variabel-variabel ini sebagai $_GET['my_variable']atau mendaftar sebagai variabel dapatkan kustom.

Krzysiek Dróżdż
sumber
1
Anda juga bisa mengatur cookie, saya kira.
Ben Polinsky
Anda perlu menggunakan add_query_arg untuk melakukannya dengan cara WordPress.
Shivanand Sharma
Anda dapat @ShivanandSharma, tetapi tidak perlu menggunakan add_query_arg untuk menambahkan hanya satu argumen ke URL tanpa argumen permintaan lainnya.
Krzysiek Dróżdż
10

Terlambat ke pesta dengan yang ini, tetapi "cara Wordpress" untuk melakukannya akan menggunakan add_query_argseperti ini:

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

Ini akan memulai redirect ke http://my.website/?variable_to_send=1. Anda dapat menangkap variabel, kemudian, di beranda (atau halaman blog, tergantung bagaimana home_url()pengaturan Anda) dengan mengakses $_GET['variable_to_send']kode PHP Anda.

Jika Anda akan melakukan ini functions.php, pastikan untuk menghubungkan ke initatau hook awal yang sama atau Anda akan mendapatkan kesalahan "Header sudah mengirim".

Semoga ini membantu seseorang yang tersandung di pos ini.

brianjohnhanna
sumber
6
Jika Anda mengarahkan ulang ke alamat lokal, Anda harus menggunakan wp_safe_redirect().
Nathan Johnson