2015-10-20 68 views
1

我寫了WordPress的重寫規則,但它不能返回匹配[1]:WordPress的add_rewrite_rule不能進去匹配[1]

add_rewrite_rule('stage/shop/([^/]+)/?', "index.php?category_name=$matches[1]", 'top'); 

但是,當我嘗試在純PHP它返回的權利事情:

preg_match_all('#stage/shop/([^/]+)/?#','stage/shop/audio-and-video-equipment/',$matches); 
var_dump($matches[1]); 

這是我的完整代碼:

add_action('init', 'wpst_init_internal'); 
function wpst_init_internal() 
{ 
    add_rewrite_rule('stage/shop/([^/]+)/?', "index.php?category_name=$matches[1]", 'top'); 
} 

add_filter('query_vars', 'wpst_query_vars'); 
function wpst_query_vars($query_vars) 
{ 
    $query_vars[] = 'category_name'; 
    return $query_vars; 
} 

有我的代碼什麼問題?

更新:

在我的查詢,CATEGORY_NAME必須返回匹配[1]但是這回什麼。這是我的轉儲:

["category_name"]=> 
    string(0) "" 
+0

add_rewrite_rule()不返回任何東西。在wordpress文檔中沒有列出它將返回匹配。它用於添加基於url的重寫規則。爲此,您可以使用您描述的preg_match_all。 – siddhesh

+0

@siddhesh我知道,我編輯並更新我的問題以獲得更好的解釋。 – Nulled

+0

您是否嘗試過此操作重要提示:修改規則後,請不要忘記刷新並重新生成重寫規則數據庫。從WordPress管理屏幕,選擇設置 - >永久鏈接,只需點擊保存更改,不做任何更改。 – siddhesh

回答

0

我解決我的問題: 我能夠在WordPress的調試模式。 然後我得到Undefined variable: matches錯誤,它引起雙引號,規則應該用單引號。