我是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)刷新重写规则(只需进入设置->永久链接并单击保存)
最合适的回答,由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 主题来测试这是否有效。我还刷新了重写规则,以使新规则生效。