如何在不使用javascript的wordpress中n秒后重定向到另一个页面?

时间:2014-09-11 13:56:50

标签: php wordpress redirect

以下问题: 我在php中检查插件页面的条件,如果它是假的,我想重定向到另一个页面。

使用PHP,它只是:

header('Refresh: 10; URL=http://yoursite.com/page.php');

如果您想在10秒后重定向。但是在Wordpress中会出现错误“已发送标题”。

它的wordpress功能是:

exit( wp_redirect( admin_url( 'admin.php?page=your_page' ) ) );

但此功能没有时间参数。

我知道如何使用javascript重定向,但我更愿意使用php / wordpress函数。有没有办法做到这一点?

4 个答案:

答案 0 :(得分:2)

您必须能够以某种方式修改文档的<head>部分并添加以下元标记:

<meta http-equiv="refresh" content="10; URL=http://yoursite.com/page.php">

根据您的模板结构的不同,这将有所不同。

在wordpress中修改head部分的常规解决方案(不是使用模板)是添加wp_head操作:

<?php

add_action('wp_head', 'some_function');
function some_function() {
    if($someCondition) { ?>
        <meta http-equiv="refresh" content="10; URL=http://yoursite.com/page.php"> <?php
    }
}

答案 1 :(得分:0)

一旦PHP发送了标题(在这种情况下是整个页面),n秒后就没有办法做到这一点。

一个可能错误的选择是让PHP使用Sleep(5)保持渲染一段时间但不是一个好的选择。

最佳解决方案: 覆盖函数“wp_redirect”并设置一个像这样的附加参数

wp_redirect($page, $interval = 20)

确保设置$ inverval = 20,否则使用此功能的其他脚本可能会失败。

答案 2 :(得分:0)

php代码是服务器端,它被处理然后传递给客户端。

简便的解决方法:

使用特殊标头并输出正常的html重定向标头

答案 3 :(得分:0)

好吧,似乎没有简单的PHP解决方案来解决这个问题所以我创建了一个javascript解决方案。似乎是处理重定向的最简单方法:

if($my_condition == false){ ?>
    <script type="text/javascript">
       $(document).ready(function() {
           var redirection_link=<?php echo json_encode(admin_url( 'admin.php?page=my_plugins_settings_page' )); ?>;                
           alert('Please check your Settings first!');
           window.location.replace(redirection_link);
        });
    </script>
<?php
}