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?

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.


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.


6
Jika Anda mengarahkan ulang ke alamat lokal, Anda harus menggunakan wp_safe_redirect().
Nathan Johnson
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.