实际上,这是一个常见的问题。
当您添加自定义帖子类型时,您也在向WordPress注册一个新的重写规则<然而,为了让WordPress识别它们,你必须在注册后刷新重写规则。
使用插件,可以通过将CPT注册与init
(因此它是可用的)和插件的激活挂钩。然后,在插件激活挂钩内,手动调用flush_rewrite_rules()
重置内容。
由于没有类似的主题激活/停用设置,因此可以使用选项设置加载主题的时间。例如:
function my_theme_register_cpt() {
$args = array(
// ... your initialization stuff
);
register_post_type( \'news\', $news );
}
add_action( \'init\', \'my_theme_register_cpt\' );
function my_theme_deactivate() {
delete_option( \'my_theme_active\' );
}
add_action( \'switch_theme\', \'my_theme_deactivation\' );
$is_active = get_option( \'my_theme_active\' );
if ( \'set\' !== $check ) {
my_theme_register_cpt();
flush_rewrite_rules();
add_option( \'my_theme_active\', \'set\', \'\', \'no\' );
}
简而言之。此代码将:
在上注册您的CPTinit
像往常一样
当您更改主题时,它会清除一个表示您的主题处于活动状态的存储值。如果您的主题处于活动状态,并且未设置此存储值,则主题将触发您的CPT注册码(再次)并立即刷新重写规则。然后设置存储值,使其不会触发flush_rewrite_rules()
多次