[英]WordPress - Rewrite rules with multiple parameters
我正在設置一個通常接受兩個查詢字符串參數的WordPress頁面。 我們的主人更喜歡使用重寫規則而不是查詢字符串,因此我必須采用這種方法。
所以我通常會這樣做:
domain.com/animal-page.php?animal=dog&color=brown
我必須這樣做:
domain.com/animal-page/animal/dog/color/brown
我遇到的問題是第二個querystring參數是可選的。
像這樣的重寫規則不起作用:
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)/color/([\w+]*)',
'index.php?pagename=$matches[1]&animal=$matches[2]&color=$matches[3]',
'top'
);
...因為如果顏色參數不在URL(這是一種可能性),那么正則表達式失敗。
我也嘗試在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'
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.