WordPress - 使用多个参数重写规则
WordPress - Rewrite rules with multiple parameters
我正在设置一个通常会接受两个查询字符串参数的 WordPress 页面。我们的主机更喜欢使用重写规则而不是查询字符串,所以我必须采用这种方法。
所以我通常会这样做的地方:
domain.com/animal-page.php?animal=dog&color=brown
我必须这样做:
domain.com/animal-page/animal/dog/color/brown
我 运行 遇到的问题是第二个查询字符串参数是可选的。
像这样的重写规则是行不通的:
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)/color/([\w+]*)',
'index.php?pagename=$matches[1]&animal=$matches[2]&color=$matches[3]',
'top'
);
...因为如果颜色参数不在 URL 中(有可能),则 Regex 会失败。
我也试过在 Regex 中使查询参数(颜色)和值(棕色)可选,但它仍然不起作用:
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)(\/color\/?)([\w+]*)',
'index.php?pagename=$matches[1]animal=$matches[2]&$matches[3]=$matches[4]',
'top'
)
我的问题是:有没有办法让第二个查询参数可选?如果 'color' 参数离开 URL,我希望页面做出适当的反应。
谢谢,
在这种情况下,您需要制定两个单独的规则:
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)/?$',
'index.php?pagename=$matches[1]&animal=$matches[2]',
'top'
);
和
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)/color/([\w+]*)',
'index.php?pagename=$matches[1]&animal=$matches[2]&color=$matches[3]',
'top'
);
我正在设置一个通常会接受两个查询字符串参数的 WordPress 页面。我们的主机更喜欢使用重写规则而不是查询字符串,所以我必须采用这种方法。
所以我通常会这样做的地方:
domain.com/animal-page.php?animal=dog&color=brown
我必须这样做:
domain.com/animal-page/animal/dog/color/brown
我 运行 遇到的问题是第二个查询字符串参数是可选的。
像这样的重写规则是行不通的:
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)/color/([\w+]*)',
'index.php?pagename=$matches[1]&animal=$matches[2]&color=$matches[3]',
'top'
);
...因为如果颜色参数不在 URL 中(有可能),则 Regex 会失败。
我也试过在 Regex 中使查询参数(颜色)和值(棕色)可选,但它仍然不起作用:
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)(\/color\/?)([\w+]*)',
'index.php?pagename=$matches[1]animal=$matches[2]&$matches[3]=$matches[4]',
'top'
)
我的问题是:有没有办法让第二个查询参数可选?如果 'color' 参数离开 URL,我希望页面做出适当的反应。
谢谢,
在这种情况下,您需要制定两个单独的规则:
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)/?$',
'index.php?pagename=$matches[1]&animal=$matches[2]',
'top'
);
和
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)/color/([\w+]*)',
'index.php?pagename=$matches[1]&animal=$matches[2]&color=$matches[3]',
'top'
);