2012-03-30 34 views
0

我終於得到我的固定鏈接工作自定義帖子類型和分類使用'a helper classWordpress重寫規則和正則表達式

我的自定義文章類型是「菜單」,我的分類是「menutype」。

我寫了下面的重寫:

function custom_rewrite($wp_rewrite) { 
    $feed_rules = array(
     'menu/salads/(.+)' => 'index.php?menu=' . $wp_rewrite->preg_index(1), 
     'menu/hotboxes/(.+)' => 'index.php?menu=' . $wp_rewrite->preg_index(1), 
     'menu/wraps/(.+)' => 'index.php?menu=' . $wp_rewrite->preg_index(1), 
     'menu/sauces/(.+)' => 'index.php?menu=' . $wp_rewrite->preg_index(1), 
     'menu/soups/(.+)' => 'index.php?menu=' . $wp_rewrite->preg_index(1), 
     '(.+)/([^/]+)(/[0-9]+)?/?$' => 'index.php?menutype=' . $wp_rewrite->preg_index(2) 
    ); 

     $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules; 
    } 
    // refresh/flush permalinks in the dashboard if this is changed in any way 
    add_filter('generate_rewrite_rules', 'custom_rewrite'); 

的唯一的事情是我想不硬編碼分類法(即菜單/醬汁/,菜單/ hotboxes)到我重寫規則的條款可能會改變(但他們將永遠是小寫字母)

我試過如下:

'menu/([^/]+)/(.+)' 

而且也:

'menu/([a-z]+)/(.+)' 

但都沒有成功。

+0

您是否需要保存第一個參考(緊跟在菜單/後面)?如果否,請移除父親。如果是這樣,你是否使用preg_index的正確參數? – Madbreaks 2012-03-30 18:34:26

+0

完全有效的啊!你可以把它寫成答案,以便我可以檢查它嗎?謝謝 – redconservatory 2012-03-30 18:40:20

+0

爲什麼**會**刪除parans工作? – redconservatory 2012-03-30 18:40:44

回答

1

如果您不需要參考接下來的menu/,那麼請移除那裏的包袱,例如,

menu/[^/]+/(.+) 

如果確實需要引用,請確保將正確的int參數傳遞給preg_index。

至於「爲什麼要移除父母工作」,因爲在第一組[^/]+周圍包含父母創建了對那裏匹配的內容的反向引用。所以當你打電話給preg_index(1)時,你要求第一場比賽,當你想要的是第二場比賽.+。你也可以通過2preg_index,表明你想要第二個匹配的組......但是如果你不需要第一個匹配,它只是浪費開銷來創建參考。