WordPress 从自定义模板重定向
WordPress Redirect from Custom Template
当查询字符串键为空值时,我需要将自定义模板页面重定向到主页。
例如:https://example.com/customtemplatepage/?value=1
Customtemplatepage 是一个页面集,在主题的根目录中有一个自定义模板 customtemplate.php。
只要查询字符串键 "value" 为空,就需要将其重定向到根目录(“/”或主页)。
- 我试图在 functions.php 中用
add_action('wp_redirect','function');
捕捉到它,但是现在太早了,因为 global $template;
仍然是空的/ customtemplate.php 还没有加载
- 当我在 customtemplate.php 中使用时,使用
wp_redirect();
已经太晚了,因为 headers 已经存在
可以在 customtemplate.php 中将 JS 与 window.location
一起使用,但这不是一个选项,因为我们必须在服务器端进行。
你应该用钩子来做 'template_redirect'
这是一个例子:
add_action( 'template_redirect', function () {
if ( ! is_page() ) {
return;
}
$page_id = [
1 ,3 ,4 //add page ids you want to redirect
];
if (is_page($page_id) && empty($_GET['whatever'])){
wp_redirect(home_url());
}
});
我建议您搜索并阅读有关 is_page 函数和 template_redirect 挂钩
的 wordpress 文档
template_include
过滤器应该可以解决问题。
add_filter('template_include', function ($template) {
// Get template file.
$file = basename($template);
if ($file === 'my-template.php') {
// Your logic goes here.
wp_redirect(home_url());
exit;
}
return $template;
});
出于好奇,为什么重定向到主页? 404 不是用来处理不存在的内容吗?
当查询字符串键为空值时,我需要将自定义模板页面重定向到主页。
例如:https://example.com/customtemplatepage/?value=1 Customtemplatepage 是一个页面集,在主题的根目录中有一个自定义模板 customtemplate.php。
只要查询字符串键 "value" 为空,就需要将其重定向到根目录(“/”或主页)。
- 我试图在 functions.php 中用
add_action('wp_redirect','function');
捕捉到它,但是现在太早了,因为global $template;
仍然是空的/ customtemplate.php 还没有加载 - 当我在 customtemplate.php 中使用时,使用
wp_redirect();
已经太晚了,因为 headers 已经存在
可以在 customtemplate.php 中将 JS 与 window.location
一起使用,但这不是一个选项,因为我们必须在服务器端进行。
你应该用钩子来做 'template_redirect' 这是一个例子:
add_action( 'template_redirect', function () {
if ( ! is_page() ) {
return;
}
$page_id = [
1 ,3 ,4 //add page ids you want to redirect
];
if (is_page($page_id) && empty($_GET['whatever'])){
wp_redirect(home_url());
}
});
我建议您搜索并阅读有关 is_page 函数和 template_redirect 挂钩
的 wordpress 文档template_include
过滤器应该可以解决问题。
add_filter('template_include', function ($template) {
// Get template file.
$file = basename($template);
if ($file === 'my-template.php') {
// Your logic goes here.
wp_redirect(home_url());
exit;
}
return $template;
});
出于好奇,为什么重定向到主页? 404 不是用来处理不存在的内容吗?