簡體   English   中英

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

我遇到的問題是第二個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM