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中做到这一点?

Answers:


10

恐怕你不能这样。

wp_redirect是发送标头的一种好方法Location,此函数的第二个参数是请求状态,而不是自定义变量。(404、301、302等)。

您可以发送一些变量作为get参数。因此,您可以执行以下操作:

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

然后,您可以将这些变量用作$_GET['my_variable']或注册为自定义get变量。


1
我想,您也可以设置一个cookie。
Ben Polinsky

您需要使用add_query_arg以WordPress方式进行操作。
Shivanand Sharma

您可以使用@ShivanandSharma,但无需使用add_query_arg将一个arg添加到URL,而无需任何其他查询arg。
KrzysiekDróżdż

10

参加这个聚会很晚,但是使用“ 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。然后,您home_url()可以通过访问$_GET['variable_to_send']PHP代码在首页(或博客页面,具体取决于您的设置)上捕获变量。

如果要在中执行此操作functions.php,请确保挂钩init或类似的早期挂钩,否则将收到“已发送标题”错误。

希望这对偶然发现这篇文章的人有所帮助。


7
如果您要重定向到本地地址,则应使用wp_safe_redirect()
内森·约翰逊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.