3

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

例如:https ://example.com/customtemplatepage/?value= 1 Customtemplatepage 是在主题的根目录中使用自定义模板 customtemplate.php 设置的页面。

每当查询字符串键“值”为空时,都需要将其重定向到根目录(“/”或主页)。

  1. 我试图在 functions.php 中捕捉到它,但它仍然为空/customtemplate.php 尚未加载还add_action('wp_redirect','function');为时过早global $template;
  2. 当我在 customtemplate.php 中执行此操作时,为时已晚,wp_redirect();因为标题已经存在

可以在 customtemplate.php 中使用 JS window.location,但这不是一个选项,因为我们必须在服务器端进行。

4

2 回答 2

2

过滤器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 不是用于处理不存在的内容吗?

于 2019-11-30T12:18:22.687 回答
2

你应该用钩子'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 文档

于 2019-11-30T10:17:00.743 回答