您没有指定要挂接操作的位置,但很可能挂接得太早,因为is_feed
应该真正做到这一点。让我们看看WordPress hook order.
正如您所看到的,插件的常见挂钩是init
. 然而,此时WP尚未完全加载。仅在wp_loaded
钩子,WP开始处理查询。因为is_feed
是的函数$wp_query
类,它不会返回true
在这一点之前。
因此,您仍然可以将插件的主要功能挂接到init
, 但您必须确保在该函数中为后面的挂钩添加操作。最符合逻辑的挂钩是template_redirect
, 因为你想要的是为一些用户提供一个不同的(空)页面。这相当于:
[inside your plugins main function]
add_action (\'template_redirect\',\'wpse346949_redirect_feed\');
[elsewhere in your plugin]
function wpse346949_redirect_feed () {
if (is_feed () && ( ... other conditions ... ) ) {
wp_redirect (home_url ());
die;
}
}
这将引导用户访问您的主页,但您当然可以指定任何其他页面,甚至可以通过根本不重定向它们而直接切断页面呈现来将它们发送到树林中。