Wp_redirect ve değişken gönderme


12

Tema klasörümdeki function.php dosyasından wp_redirect () ile bazı değişkenler nasıl gönderilir?

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

Ve ana sayfada değişkeni if-else durumunda yakalayıp bazı onaylar göstereceğim veya $variable_to_send= '1' değerine bağlı olarak yakalayamayacağım .

WordPress'te nasıl yapılır?

Yanıtlar:


10

Korkarım ki bu şekilde yapamazsın.

wp_redirectüstbilgi göndermenin şık bir yoludur Locationve bu işlevin ikinci argümanı özel durum değil, istek durumudur. (404, 301, 302 vb.).

Bazı değişkenleri get parametresi olarak gönderebilirsiniz. Böylece böyle bir şey yapabilirsiniz:

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

Ardından bu değişkenleri $_GET['my_variable']özel get değişkeni olarak kullanabilir veya kaydedebilirsiniz.


1
Sanırım bir kurabiye de kurabilirsin.
Ben Polinsky

1
Bunu yapmak için add_query_arg kullanmanız gerekir.
Shivanand Sharma

@ShivanandSharma olabilir, ancak başka sorgu sorguları olmadan URL'ye yalnızca bir argüman eklemek için add_query_arg kullanmaya gerek yoktur.
Krzysiek Dróżdż

10

Bu parti ile geç, ama bunu yapmak için "Wordpress yolu" şöyle kullanır add_query_arg:

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

Bu, adresine bir yönlendirme başlatacaktır http://my.website/?variable_to_send=1. Daha sonra, PHP kodunuza home_url()erişerek değişkeni ana sayfada (veya kurulumunuzun nasıl yapıldığına bağlı olarak blog sayfasında) yakalayabilirsiniz $_GET['variable_to_send'].

Bunu yapacaksanız functions.php, initkancaya veya benzer şekilde erken bir kancaya takıldığınızdan emin olun, yoksa "Başlıklar zaten gönderildi" hatası alırsınız.

Umarım bu yazı boyunca tökezleyen birine yardımcı olur.


7
Yerel bir adrese yönlendiriyorsanız kullanmanız gerekir wp_safe_redirect().
Nathan Johnson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.