Wordpress正则表达式匹配前缀/类别1 /类别2 /页码

时间:2012-09-04 20:13:52

标签: php regex wordpress rewrite

我写了一个Wordpress插件,它查看了品牌名单,并转出了他们开头的字母的有序列表,例如A B C D ....

当用户点击任何给定的字母时,它会列出以该字母开头的品牌名称,例如Abus,ABike,Animal等

然后,用户可以点击一个品牌名称,并在几个页面上显示该品牌的商品列表。

网址结构因此是:

http://www.domain.com/brands/A/Abus/1

http://www.domain.com/brands/B/Bontrager/1

因为这是在Wordpress中试图了解需要进入add_rewrite_rule的正则表达式。我可以通过这样做来匹配第一部分(上面例子中的/ A /或/ B /):

add_rewrite_rule('brands/?([^/]*)', 'index.php?pagename=brands&brand_letter=$matches[1]&brand_name=$matches[2]&page=$matches[3]

但我无法与品牌名称本身或页码相匹配。请注意,品牌名称和编号不会始终在网址中。格式为:

/ brands {always} / brand_letter {always} / brand_name {有时} /页码{偶尔}

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

将正则表达式更改为:

brands/(\w)(?:/([^/]+)(?:/(\d+))?)?
       |   |   |      |   |     | |
       |   |   |      |   |     | |
       |   +---|------|---|-----|-Optional brand name and page number.
       |       |      |   |     |
       |       |      +---|-----Optional page number.
       |       |          |
       |       |          $3, the page number.
       |       |
       |       $2, the brand name.
       |
       $1, the brand letter.