会话变量不可靠,在某些WP主机上无法工作。更糟糕的是,您将阻止缓存
但更重要的是,不要路由,重定向!路由和重定向不是一回事
因此,我们需要以下逻辑:
在template_redirect
如果用户在主页上,请执行操作is_home
<电话wp_safe_redirect
重定向到最近的office页面呼叫exit
当会话变量不存在且包含所选位置时,我希望设置会话变量,以便我可以将后续页面请求重定向到该位置的子页面。
但是你有他们的IP,你用它来确定他们的位置,为什么不直接用它呢?
用户正在请求联系人页面:http://example.com/contact 我需要使用什么钩子才能将URL重写为http://example.com/locations/new-york/contact 是否设置了会话变量?
当你说rewrite
, 这与重定向不同。如果我访问example.com/foo
, 它被重写为example.com/bar
在PHP中,它仍然会说/foo
在我的浏览器中。你还没有把我转移到/bar
, 您已经更改了在上显示的内容/foo
. Redirect 用户。
你可能会认为我在吹毛求疵,但重写是另一回事,使用不同的API集,它解决了一个完全不同的问题。布线也一样。Routing 找出给定的URL,我应该加载哪个代码。你的问题是“给定URL和位置,我应该在哪里redirect “用户”
因此,在联系人页面上,在输出任何HTML之前,测试用户位置和使用wp_safe_redirect
然后退出