为自定义分类生成重写规则

时间:2014-08-11 08:34:54

标签: wordpress url-rewriting wordpress-plugin url-rewrite-module

我想为自定义分类和自定义帖子类型添加新的重写规则,但我坚持使用正则表达式。

add_filter( 'generate_rewrite_rules', 'my_custom_rewrite_rules');

function my_custom_rewrite_rules($orules){
        $rules = array ();
        $rules['([^/]+)(/[0-9]+)?/?$'] = 'index.php?city=$matches[1]&store=$matches[2]&page=$matches[3]';
        $rules['page/?([0-9]{1,})/?$'] = 'index.php?city='.$this->slug.'&paged=$matches[2]';
        $rules['$'] = 'index.php?city='.$this->slug;
return $rules + $orules->rules;

但是当我尝试访问以下网址时,我收到错误找不到网页

http://new-york.site[.]com/my-store/

但是这个作品:

http://site[.]com/new-york/my-store/

以上示例在我使用以下函数挂钩时,对默认帖子和默认类别完美地工作: post_rewrite_rules
category_rewrite_rules 分开。

注意:

'城市'是Custom Taxonomy Slug。

'存储'是Custom Post Type Slug。

还可以考虑使用' $ this-> slug'

来获得正确的Slug

所以我知道我错过了什么?如果您需要更多细节来回答这个问题,请随时提出,任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

而不是使用我使用的generate_rewrite_rules

<强> rewrite_rules_array

add_filter( 'rewrite_rules_array', 'my_custom_rewrite_rules');

function my_custom_rewrite_rules($orules){
        $rules = array ();
        $rules['([^/]+)(/[0-9]+)?/?$'] = 'index.php?city=$matches[1]&store=$matches[2]&page=$matches[3]';
        $rules['page/?([0-9]{1,})/?$'] = 'index.php?city='.$this->slug.'&paged=$matches[2]';
        $rules['$'] = 'index.php?city='.$this->slug;
return $rules + $orules->rules;