0

我正在尝试在 wordpress 中重写一个 url,以便我可以根据传递的变量提供动态内容。我有一个插件,需要将可变数据传递给它。目前我有:

http://xyzsite.com/page/?var1=something

这工作正常并传入 $_GET var。所以我的下一步是清理变量,使其看起来像

http://xyzsite.com/page/something

我已经进行了一些谷歌搜索,并访问了一些看起来很有希望的网站,但我无法让它们中的任何一个工作。根据我的阅读,我需要使用

add_rewrite_tag and add_rewrite_rule

阅读完文章后,我已将其添加到我的 functions.php 页面:

add_rewrite_tag('%var1%','([^&]+)');
add_rewrite_rule('^page/([^&]+)/?','index.php?p=1141&var1=$matches[1]','top');

当我导航到页面http://xyzsite.com/page/something我收到 404 错误。当我导航到http://xyzsite.com/page/?var1=something它仍然工作正常。所以看起来我的重写没有注册或正常工作。

有人可以帮我实现上述重写。仅供参考,我的永久链接设置设置为帖子名称,如果这很重要的话。谢谢你。

4

1 回答 1

1

I̶'̶m̶̶n̶o̶t̶̶a̶̶r̶e̶g̶e̶x̶̶p̶r̶o̶,̶̶b̶u̶t̶̶I̶̶s̶u̶s̶p̶e̶c̶t̶̶a̶n̶̶i̶s̶s̶u̶e̶̶i̶n̶̶y̶o̶u̶r̶r̶r̶e̶w̶r̶i̶t̶e̶̶r̶u̶l

a̶d̶d̶_̶r̶e̶w̶r̶i̶t̶e̶_̶r̶u̶l̶e̶(̶'̶^̶p̶a̶g̶e̶/̶(̶[̶^̶&̶]̶+̶)̶/̶?̶'̶,̶'̶i̶n̶d̶e̶x̶.̶p̶h̶p̶?̶p̶=̶1̶1̶4̶1̶&̶v̶a̶r̶1̶=̶$̶m̶a̶t̶c̶h̶e̶s̶[̶1̶]̶'̶,̶'̶t̶o̶p̶'̶)̶;̶

̶请注意̶/̶̶......你加在̶e̶n̶d̶.̶因此,你应该访问您的网页以http:??̶/̶/̶x̶y̶z̶s̶i̶t̶e̶.̶c̶o̶m̶/页/某事/̶̶而不是̶x̶y̶z̶s̶i̶t̶e̶.̶c̶o̶m̶/页/某事.̶̶H̶a̶v̶e̶̶y̶o̶u̶̶t̶r̶i̶e̶d̶̶i̶f̶̶t̶h̶a̶t̶̶w̶o̶r̶k̶s̶?̶

正如 Gustavo Straube 在评论中指出的那样,上面划掉的文字是错误的。请忽略该建议的解决方案。

我最后的建议是尝试flush_rules();在你的最后一个之后添加一个add_rewrite_rule,如http://codex.wordpress.org/Rewrite_API/flush_rules中所述。

请注意,您应该使用get_query_var('var_name')而不是尝试$_GET直接访问您的查询变量。

于 2012-08-18T10:34:51.643 回答