Wp_redirectおよび送信変数


12

テーマフォルダーのfunction.phpファイルからwp_redirect()を使用していくつかの変数を送信する方法

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

また、ホームページでは、if-else条件で変数をキャッチして、$variable_to_send= '1'かどうかに応じて確認を表示します。

WordPressでそれを行う方法?

回答:


10

この方法でそれを行うことはできません。

wp_redirectはヘッダーを送信するための優れた方法でLocationあり、この関数の2番目の引数はリクエストのステータスであり、カスタム変数ではありません。(404、301、302など)。

いくつかの変数を取得パラメーターとして送信できます。だからあなたはこのようなことをすることができます:

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

次に、これらの変数をasとして使用する$_GET['my_variable']か、カスタムのget変数として登録します。


1
クッキーを設定することもできると思います。
Ben Polinsky 2017年

WordPressの方法で行うには、add_query_argを使用する必要があります。
Shivanand Sharma

@ShivanandSharmaを使用できますが、add_query_argを使用して、他のクエリ引数なしで1つの引数のみをURLに追加する必要はありません。
KrzysiekDróżdż

9

これでパーティーに遅れますが、それを行う「Wordpressの方法」は次のように使用しますadd_query_arg

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

これにより、へのリダイレクトが開始されhttp://my.website/?variable_to_send=1ます。次に、PHPコードでhome_url()アクセスすることにより、ホームページ(または設定に応じてブログページ)で変数をキャプチャでき$_GET['variable_to_send']ます。

これをで行う場合はfunctions.php、フックするinitか、同様に初期のフックにしてください。そうしないと、「ヘッダーが既に送信されました」エラーが発生します。

うまくいけば、これがこの投稿を見つけた人を助けるでしょう。


5
ローカルアドレスにリダイレクトする場合は、を使用する必要がありますwp_safe_redirect()
ネイサンジョンソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.