如何在将 headers 发送到使用 WordPress 的页面之前重定向

How to redirect headers before they are sent to a page using WordPress

我目前正在学习 O'Reilly 使用 Wordpress 构建 Web 应用程序一书,该书解释了页面模板是在 WordPress init 和 wp 操作触发后加载的。我知道在调用 get_header 之前不会调用 wp_head 操作。

您如何处理和重定向收集个人姓名、电子邮件和消息的通用联系表单?还是这不是正确的思考方式?

这里是我记录的操作列表,可以帮助我弄清楚要与 WordPress 挂钩的内容。这是我完整列表中的一小段,但它应该与您要执行的操作相符:

主题functions.php加载

  • after_setup_theme
  • 初始化
  • wp_loaded

wp 查询变量已定义

  • get_search_query(过滤器)
  • pre_handle_404(过滤器)
  • wp
  • template_redirect
  • template_include
  • get_header

headers发送

开始html,开始头

  • wp_head
  • wp_enqueue_scripts
  • wp_print_styles
  • wp_print_scripts

端头

在 headers 发送之前,您可以依赖的最后一个操作是 get_header。如您所见,wp_head 在 headers 发送后触发,因此这对您没有用。

在像您这样的情况下,我通常想等到至少定义了 WP 查询变量,因为很多时候我需要知道该信息才能决定要做什么。我无法评论您的具体情况,因此您可能不在乎。但是在 get_header 之前挂钩到任何动作应该没问题。

您的挂钩应该足够晚,以允许 WordPress 处理您可能需要的任何信息。如果您不关心任何事情而只是想要 $_POST 数据,那么继续并挂接到 init 操作。如果你希望大量的 WordPress 处理的信息可供你使用,那么挂钩到 wp