最早实现安全可靠重定向的WP挂钩

时间:2017-02-05 作者:CGriffin

我正在寻找创建一个自定义插件,该插件将检查用户提供的特定cookie,如果找不到,则将其重定向到授权页面,在那里他们可以输入代码来访问该网站。这需要在整个站点上进行,包括登录和注册页面(不问,客户端规范)。我打算通过在最早的WordPress挂钩上注册一个函数来实现这一点,该挂钩a)每次访问页面时都会加载,而不管内容如何,b)为站点的每个页面运行,包括管理端,c)调用得太晚,以至于它可以访问用户数据(我们不想对管理员帐户运行此验证)。我可以使用的最早、总是加载的WordPress挂钩是什么?

我查看了WordPress的文档,找到了页面加载时调用的所有钩子的列表,但它没有指定总是调用哪一个钩子,而不是为特定内容调用哪一个钩子(即registered_taxonomy 在与分类法无关的页面上运行?)。

我自己最好的猜测是init 胡克,但我不是百分之百肯定。我也不确定这是否会在挂钩序列中过早地重定向到另一个页面。

或者,如果有比WordPress挂钩更好的方法来处理这个问题,我洗耳恭听!

1 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

registered_taxonomy 不适用于普通插件,仅适用于必须使用的插件。普通插件可用的第一个挂钩是plugins_loaded. 虽然,当前用户在这一点上没有设置,所以没有理由这么早挂接。

set_current_user 在设置当前用户后立即在每个页面上激发(即使未登录)。See here. 调用钩子的函数是“可插入的”,因此,如果某个插件决定重写该函数,则可能不会触发该钩子。这对我来说似乎不太可能,所以我确实使用这个钩子来使用用户数据。

除此之外还有几个其他的钩子set_current_user - unload_textdomain, load_textdomain, 和after_setup_theme - 每一页上都有火。如果你真的想用的话,我想你可以用这些。

如果是我,我会用set_current_user. 如果您想格外小心,请使用init. init 足够早,您仍然可以安全地重定向。

另外,我建议使用Query Monitor 插件。我发现它对于WordPress的开发是不可或缺的。

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。