WordPress 从自定义模板重定向

WordPress Redirect from Custom Template

当查询字符串键为空值时,我需要将自定义模板页面重定向到主页。

例如:https://example.com/customtemplatepage/?value=1 Customtemplatepage 是一个页面集,在主题的根目录中有一个自定义模板 customtemplate.php。

只要查询字符串键 "value" 为空,就需要将其重定向到根目录(“/”或主页)。

  1. 我试图在 functions.php 中用 add_action('wp_redirect','function'); 捕捉到它,但是现在太早了,因为 global $template; 仍然是空的/ customtemplate.php 还没有加载
  2. 当我在 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 不是用来处理不存在的内容吗?