从插件使用Get_Query_var()

时间:2014-06-28 作者:Ionut Staicu

我正在尝试在插件中使用重定向功能,但我遇到了一个问题。首先,代码:

add_action( \'init\', function(){
    add_rewrite_rule( \'go/([^/]+)/?$\', \'index.php?redirect_to=$matches[1]\', \'top\' );
    add_rewrite_tag( "%redirect_to%", \'([^&]+)\' );`
} );
好了,规则已经设置好了。标记已设置。如果我使用get_query_var(\'redirect_to\') 的内部functions.php (或者在主题中的任何地方)它都可以工作,但如果我尝试使用插件文件中的相同查询变量,它会自动失败。由于它是一个插件,因此无法要求用户编辑其主题:)

我所做的事情:

我在init 挂钩设置为优先级999,如果使用wp_head 而不是init, 但这样我就不能再重定向了,我刷新了重写规则,所以我的问题是:我该如何使用该死的get_query_var(\'redirect_to\') 在我的插件文件中?

谢谢

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

钩入parse_query 而是:

add_action( \'parse_query\', function() {
    add_rewrite_rule( \'go/([^/]+)/?$\', \'index.php?redirect_to=$matches[1]\', \'top\' );
    add_rewrite_tag( "%redirect_to%", \'([^&]+)\' );`
} );
原因:init 太早了,尚未设置query\\u vars。wp_head 为时已晚,此时无法重定向。

结束

相关推荐