正在修改WP URL处理代码?

时间:2011-12-02 作者:meeble

我正在尝试使用mod\\u重写和修改WordPress的URL处理,以允许从URL向PHP传递变量,同时保持“非常永久”的功能。(关于WP 3.2.1)

类似这样:

http://epiclasers。com/hello world(普通,永久链接设置为/%postname%)

http://epiclasers。com/state/hello-world(WP应该显示与上面相同的hello-world帖子,但也会将状态字符串作为变量传递给PHP)

http://epiclasers。com/state/city/hello-world(WP应该显示hello-world帖子,但会将state和city字符串作为变量传递给PHP)

我在我的中添加了以下mod\\u rewrite指令。htaccess文件:

RewriteRule ^(\\w+)/(\\w+)/ /index.php?state=$1&city=$2 [L]
RewriteRule ^(\\w+)/ /index.php?state=$1 [L]
什么样的作品。正在传递变量,PHP可以通过以下方式获取它们:

$状态=$\\u GET[\'state\']
$城市=$\\u获取[\'city\'];

问题是WP被URL中的变量弄糊涂了,并且没有输出正确的模板文件。URL如下所示:

http://epiclasers.com/arizona/phoenix/
http:/epiclasers。com/亚利桑那州/凤凰城/你好世界
http://epiclasers.com/arizona/

正在调出404页未找到模板。

如何修改WP URL处理代码以忽略URL的/州和/市部分,而不破坏URL,如:

http://epiclasers。com/category/category1 http:/epiclasers。com/tag/tag1 http:/epiclasers。com/类别/类别2/子类别

谢谢,德文

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

最后,我用一点代码(以插件的形式)解决了这个问题:

if(isset($_GET[\'state\']) OR isset($_GET[\'city\'])) {
$url = explode("/", $_SERVER[\'REQUEST_URI\']);
$url = end($url);
$_SERVER[\'REQUEST_URI\'] = "/" . $url;
}
这段代码实质上从REQUEST\\u URI全局变量中删除了“/arizona/”或“/arizona/phoenix/”,并将其替换为“/”,然后强制WP使用index提供首页模板。php。固定的

也许你们中的一些人可以把这个答案投给我

结束