以下问题: 我在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函数。有没有办法做到这一点?
答案 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
}