为什么我的自定义分类法会得到404?
add_action(\'init\', \'custom_taxonomy_flush_rewrite\');
function custom_taxonomy_flush_rewrite() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_action(\'init\', \'create_publication_categories\');
function create_publication_categories() {
$args = array(
\'label\' => __(\'Categories\'),
\'has_archive\' => true,
\'hierarchical\' => true,
\'rewrite\' => array(
\'slug\' => \'topics\',
\'with_front\' => false
),
);
$postTypes = array(
\'publication\'
);
$taxonomy = \'publication\';
register_taxonomy($taxonomy, $postTypes, $args);
}
所以我有一个模板叫做
taxonomy-publication.php
, 但我还是拿到了404。
我已重置永久链接如下this. 以及其他答案,如this 和this.
但我还是拿到了404。你知道我错过了什么吗?
最合适的回答,由SO网友:nmr 整理而成
你用的是同样的子弹publication
用于自定义分类法和自定义帖子类型。Slug应该是unique.
另一件事(与404无关)是flush_rules
. 正如你所看到的here 冲洗在init
胡克是个坏主意。
Important:
刷新重写规则是一项昂贵的操作,有教程和示例建议在init
钩This is bad practice. 它应该在“shutdown”挂钩上执行,或者在插件/主题(de)激活时执行刷新规则一次(最好将状态存储在选项中,而不是activation
或deactivation
, 因为在多站点上它们是无用的),或者当您知道需要更改重写规则时。Don\'t do it on any hook that will triggered on a routine basis. 更多详细信息,请参阅WP Engineer的帖子评论:自定义帖子类型和Permalink确保自定义帖子类型和分类是properly registered before 刷新重写规则,尤其是在插件激活期间:WordPress插件开发人员的激活检查表(无法访问)Example
主题激活刷新规则:
add_action( \'after_switch_theme\', \'custom_taxonomy_flush_rewrite\' );
function custom_taxonomy_flush_rewrite() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}