如何将URL变量传递到WordPress页面

时间:2010-03-25 23:39:12

标签: wordpress

这已经在这里(超过一年前)被问过,但显然没有回答,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

必须有某种辅助功能,对吧?

3 个答案:

答案 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之后