我创建了一个页面(页面ID235
) 使用需要传递变量的页面模板。我想通过URL传递这个变量。我的第一次尝试是用一个GET变量来传递它,效果很好。
URL: http://example.com/sok/events/?kategori=variablehere
现在,我想我应该给它加点香料并美化一下。这就是我的目标:URL: http://example.com/sok/events/variablehere
我在尝试中使用的代码如下所示:function setup_filter_rewrites() { add_rewrite_tag(\'%kategori%\',\'([^&]+)\'); add_rewrite_rule(\'^sok/events/([^/]*)/?\', \'index.php?p=235&kategori=$matches[1]\', \'top\'); } add_action( \'init\', \'setup_filter_rewrites\' );现在,当访问上面的URL时,我被重定向到
http://example.com/sok/events/
- i、 e.URL,但不带查询变量。显然,正如您可能猜测的那样,查询变量在页面内是不可访问的。我听说了redirect_canonical
函数可能会导致重写规则出现问题,因此我禁用了它。这样做之后,访问上面的URL会生成404。php请求。
正如您所看到的,我确实试图减少代码,使其尽可能简单,并使用正确的API函数。我已经检查了规则A tool to analyze rewrite rules? 它将变量报告为公共的和可访问的。我试着把这一页裁剪成一个简单的echo $wp_query->query_vars[\'kategori\']
但这没有输出任何内容,也没有阻止重定向。
我怀疑重定向是这里的问题所在-如果我能阻止它,我相信我能够获取查询变量。
此问题类似于URL Rewrite + Page + Custom Post Type = Unusual Redirect 和Querystring parameter getting lost in rewrite rule 到目前为止,这也是一个重定向错误。然而,在我的情况下,我没有处理任何类型的自定义帖子。