这已经在这里(超过一年前)被问过,但显然没有回答,WordPress总是在不断发展,所以现在也许是一个很好的解决方案。我想通过url将变量传递给WordPress页面(类似于CodeIgniter uri辅助段)。
目前我可以这样做......
我的个人资料页面是: http://website.com/profile
我可以传递这样的变量: http://website.com/profile?username=johndoe
我想像这样传递变量: http://website.com/profile/johndoe 要么 http://website.com/profile/username/johndoe
必须有某种辅助功能,对吧?
答案 0 :(得分:1)
我发现使用PHP和WordPress函数实现这种转换的方式。
这是低点。在您的模板代码中包含$ wp_query全局变量,然后使用其查询属性,该属性是一个数组。其中一个数组索引称为“pagename”,它所做的是返回相关页面的请求uri。因此,假设您的网址为http://website.com/profile/johndoe
,并且您的WordPress安装在您的webroot中,那么此代码:
global $wp_query;
echo $wp_query->query['pagename']
将推出'profile / johndoe'。
但是,如果url是:http://website.com/cms/profile/johndoe
,这意味着您的WordPress安装在cms
目录而不是webroot,上面的代码仍会返回profile/johndoe
,这意味着它会进入帐户在设置面板中设置WordPress地址和站点地址之间的差异。
所以无论如何,好的部分是你可以把这个输出分成如下数组:
$segments = array_explode('/', $wp_query->query['pagename']);
我相信第一个句段(在这种情况下profile
将被分配给数组的第一个索引,依此类推。)。
无论如何,它不如CodeIgniter那么好,但它不需要太多的代码就可以完成它。
答案 1 :(得分:0)
假设您的wp安装使用固定链接,那么.htaccess功能,您应该在.htaccess文件的TOP上放置以下内容:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^profile/(.*)$ /profile?username=$1 [NC]
答案 2 :(得分:0)
在根文件夹中附加到.htaccess文件,如
RewriteRule ^profile/?([_0-9a-z-]+)?/?$ http://website.com/profile?username=$1 [R=301,L]
在其他RewriteRules之后