如何根据查询字符串参数重写‘页面’URL?

时间:2012-08-16 作者:user1491819

我有以下页面,其中包含一篇帖子和一些评论:

http://mysite.com/tips

当用户发布评论时,我会向其中添加元数据,以便使用以下URL筛选评论:
http://mysite/tips?id=cat&;filter\\u id=1
http://mysite/tips?id=dog&;filter\\u id=2

我想改用以下url:
http://mysite/tips/cat
http://mysite/tips/dog

“提示”页面根据查询字符串参数显示帖子列表。

我完成了本教程,这似乎是我所需要的,但当我键入url时,我得到一个页面未找到错误。http://thereforei.am/2011/10/28/advanced-taxonomy-queries-with-pretty-urls/

这可能吗?

3 个回复
SO网友:Brian Fegter

您可以添加如下重写规则。确保向WordPress注册您的公共查询变量,以便它识别您的重写规则变量。

add_rewrite_rule(\'^(tips)/([^/]*)/([^/]*)/?\', \'index.php?name=$matches[1]&id=$matches[2]&filter_id=$matches[3]\',\'top\');

add_filter(\'query_vars\', \'foo_my_query_vars\');
function foo_my_query_vars($vars){
    $vars[] = \'id\';
    $vars[] = \'filter_id\';
    return $vars;
}
访问永久链接设置页面刷新永久链接。

您可以按如下方式访问变量:

$id = get_query_var(\'id\');
$filter_id = get_query_var(\'filter_id\');
注意,您希望有两个动态变量和一个URI段,这根本不起作用。上述重写规则适用于tips/cat/1(1是filter\\u id)。

为了测试您的规则,我强烈建议您使用Monkeyman Rewrite Analyzer.

希望这对你有帮助!

SO网友:robin

您可以使用add_query_arg 功能:

add_query_arg(\'filter_id\', 1);
add_query_arg(\'filter_id\', 2);
现在URL如下所示:

http://mysite/tips/cat?filter_id=1

http:// mysite/tips/dog?filter_id=2

可以按如下方式获取参数值:

$id = get_query_var(\'id\');
$filter_id = get_query_var(\'filter_id\');
这里是more infomation about add_query_arg

SO网友:Seeker

我想你想改变永久链接样式。你可以通过Wordpress的管理面板更改网站的永久链接。转到Wordpress,然后在侧栏菜单中转到设置,然后在那里你会看到永久链接的子菜单。单击它,你会看到Wordpress提供的许多类型的永久链接。你也可以自定义永久链接。查看图片,希望对您有所帮助:

Permalink Settings

结束

相关推荐

Page Name and Permalinks

我正在使用WordPress 3.2.1,刚刚在我的网站上添加了一个名为“中心管理”的页面,这反过来又创建了一个永久链接:http://localhost:8888/mysite/centre-management/对于我刚刚创建的页面。之后,我把这个页面弄得一团糟,想重新开始。因此,当我现在创建另一个与上述名称相同的新页面时,即“中心管理”,WordPress现在为我创建一个永久链接:‎http://localhost:8888/mysite/centre-管理-2/这不是我想要的。我希望它显示为:ht