重写自定义分类的规则

时间:2014-02-12 作者:checcco

我是wordpress的新手,我正在尝试创建一个食谱博客。

我已经为成分创建了自定义分类法:

register_taxonomy( 
    \'ingredient\', 
    \'post\', 
    array( \'label\' => \'Ingredient\', 
           \'hierarchical\' => true
         ), 
    array( \'rewrite\' => array (
                            \'slug\'=>\'recipes-with\'
                        )
    );
一切正常,我的URL如下

www.mysite.com/recipes-with/onion

但我希望我的URL

www.mysite.com/recipes-with-onion

我试着调查add_rewrite_rule(), 但我似乎无法让它工作。

任何帮助都将不胜感激!

编辑:以下是我如何使用toni\\u lehtimaki帮助解决问题的。

1) 我删除了rewrite register\\u taxonomy的args参数中的数组,因此它成为:

register_taxonomy( \'ingredient\', \'post\', array(\'label\'=>\'Ingredient\', \'hierarchical\'=>true));
2)然后我添加了一些重写规则

add_rewrite_rule(\'^recipes-with-(.*)/page/([0-9]+)?$\',\'index.php?ingredient=$matches[1]&paged=$matches[2]\',\'top\');
add_rewrite_rule(\'^recipes-with-(.*)/?\',\'index.php?ingredient=$matches[1]\',\'top\');
3)我需要做的最后一件事是添加过滤器

add_filter( \'term_link\', \'change_ingredients_permalinks\', 10, 2 );

function change_ingredients_permalinks( $permalink, $term ) {
    if ($term->taxonomy == \'ingredient\') $permalink = str_replace(\'ingredient/\', \'recipes-with-\', $permalink);
    return $permalink;
}
4)刷新重写规则(只需进入设置->永久链接并单击保存)

1 个回复
最合适的回答,由SO网友:toni_lehtimaki 整理而成

我想出了这个add_rewrite_rule():

add_rewrite_rule(\'^recipes-with-([^/]*)/?\',\'index.php?ingredient=$matches[1]\',\'top\');
我对上述内容进行了一些测试,当您每次将其用于一种分类法时,效果很好。这是我函数中的代码。php:

add_action( \'init\', \'create_ingredient_tax\' );
function create_ingredient_tax() {
    register_taxonomy( 
            \'ingredient\', 
            \'post\', 
             array( \'label\' => \'Ingredient\', 
            \'hierarchical\' => true
            ), 
            array( \'rewrite\' => array (
                        \'slug\'=>\'recipes-with\'
                    ))
        );
}
// Remember to flush_rewrite_rules(); or visit WordPress permalink structure settings page
add_rewrite_rule(\'^recipes-with-([^/]*)/?\',\'index.php?ingredient=$matches[1]\',\'top\');
然后我使用taxonomy-post_format.php WordPress模板文件twentyfourteen 主题来测试这是否有效。我还刷新了重写规则,以使新规则生效。

结束

相关推荐