问题描述
任何人都知道要注销自定义帖子类型的方法?
有相当于 register_post_type()
吗?
最佳解决方案
目前没有一个取消注册一个职位类型的功能,但是这个过程很简单。
Andrew Nacin 提供了一些关于 trac,found here 的代码,并在下面发布。
if ( ! function_exists( 'unregister_post_type' ) ) :
function unregister_post_type( $post_type ) {
global $wp_post_types;
if ( isset( $wp_post_types[ $post_type ] ) ) {
unset( $wp_post_types[ $post_type ] );
return true;
}
return false;
}
endif;
取消注册 built-in 帖子类型将对 WordPress 有未知的影响,因此请自行承担风险。取消注册自定义帖子类型应该是完全安全的,但是您的安装自然不会清除 (即,注销一个帖子类型不等同于数据库中的数据删除) 。
我可以想象一些这样可能需要的场景,但是更合理的方法 (如果可能的话),如果不想要的话,首先不要注册该帖子类型。
次佳解决方案
从 WordPress 4.5 起有这样做的功能,unregister_post_type
。例:-
function delete_post_type(){
unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
第三种解决方案
这对我来说是有效的,像 Rarst 说如果可能的话使用 remove_action()。
add_action( 'after_setup_theme','remove_foundation_options', 100 );
function remove_foundation_options() {
remove_action( 'init', 'Orbit');
}
第四种方案
t31os 注意到,从全局变量中删除帖子类型是很容易的。
但是,如果你的意思是 non-core post 类型,那么最好是查找注册它的代码,并用 remove_action()
解开 (如果它是体面的代码,那么它应该被钩住而不是直接运行) 。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。