问题描述

任何人都知道要注销自定义帖子类型的方法?

有相当于 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。