是否有等同于
register_post_type()
的内容? #1 楼
从WordPress 4.5开始,可以执行unregister_post_type
的功能。示例:-function delete_post_type(){
unregister_post_type( 'blocks' );
}
add_action('init','delete_post_type');
评论
这需要具有更高的优先级,然后用于注册帖子类型的优先级,否则它将不起作用
–马克·卡普伦
16年7月12日在5:46
@Dhinju Divakaran,它不是从我现在不使用的数据库中删除旧帖子类型。
–Faiyaz Alam
17年2月3日,下午5:48
它的工作方式,请确保与注册帖子类型所使用的操作相比,您将该操作赋予较高的优先级。
– Ajith R Nair
17年5月14日在21:23
值得一提的是unregister_post_type()不会从数据库中删除任何内容。它仅防止帖子类型被注册。
–戴夫·罗姆西
18 Mar 3 '18 at 0:40
这对我来说非常有效,但是请记住,您需要通过在Settings-> Permalinks admin页面中重新保存您的Permalink结构来通知WordPress有关更改。否则,具有永久链接冲突的页面将无法正常工作。
– MarkPraschan
19年2月1日在17:23
#2 楼
当前没有注销帖子类型的功能,但是过程非常简单。Andrew Nacin提供了有关trac的一些代码,可以在此处找到并在下面发布。
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;
取消注册内置帖子类型将对WordPress产生未知影响,因此请您自担风险。取消注册自定义帖子类型应该是绝对安全的,但自然不会对您的安装进行任何清理(即,取消注册帖子类型并不等同于从数据库中删除数据)。可能需要这样做的场景,但是更明智的方法(在可能的情况下)是,如果不需要的话,根本就不用首先注册帖子类型。
评论
不客气.. :)如果您要以代码形式添加自己的帖子类型,则更简单的解决方案是删除您运行的添加它们的函数/代码。另请注意,删除帖子类型不会将其从帖子表中清除,因此您可能在该表中有多余的条目。
– t31os
2010年11月9日14:16
@anu:如果不在每个页面加载(init)上执行register_post_type(),唯一保持“永久”状态的可能是永久链接结构(刷新它,它将消失),以及数据库中的帖子,您可以通过在wp_posts WHERE post_type ='[您的自定义帖子类型]'中执行DELETE FROM进行删除。
– Jan Fabry
2010年11月9日14:35
有趣的是,我确实删除了该custom_post_type的register_post_type代码,并且没有向该cpt添加任何帖子,但没有删除管理UI。
–anu
2010年11月9日14:36
或者,当然,既然我再试一次,它就如你们所描述的那样工作-即新cpt的管理UI已经消失了。可能我是木偶:)无论如何还是有用的信息,所以谢谢。
–anu
2010年11月9日14:37
2016年2月更新-此功能已合并到WP 4.5.0的核心(将于4月发布)。
–里卡多BRGWeb
16-2-4在19:43
#3 楼
这对我有用,就像Rarst尽可能使用remove_action()一样。add_action( 'after_setup_theme','remove_foundation_options', 100 );
function remove_foundation_options() {
remove_action( 'init', 'Orbit');
}
#4 楼
正如t31os指出的那样,从全局变量中删除帖子类型很容易。但是如果您的意思是非核心帖子类型,那么最好查找注册该代码并与
remove_action()
挂钩的代码(如果它是体面的代码应该被钩住而不是直接运行)。评论
register_post_type()不是一个很适合钩子的函数。注册帖子类型的通常方法是直接在挂接到init的函数中运行该函数。删除该动作可能会产生不良影响,因为该功能通常会删除其他功能。
– John P Bloch
2010年11月9日13:59
@John P Bloch是的,我知道这一点。有时您最终会重建所有init以使其正确无误,最后它取决于特定的代码及其质量/合理性。
–稀有
2010年11月9日14:21
#5 楼
在WordPress 4.5及更高版本中,它们提供了删除帖子类型(unregister_post_type)的功能。示例
function delete_post_type(){
unregister_post_type( 'jobs' );
}
add_action('init','delete_post_type');
它将完全起作用。
评论
任何人都在寻找这个。注册自定义帖子类型时,没有任何内容保存到数据库中。 wp db中的posts表是非结构化的。它仅通过wp脚本的内部进行注册,您可以使用您通过register posts创建的类型创建一个进入posts表的条目。希望对别人有帮助。从WordPress 4.5开始,有功能可以执行unregister_post_type。请参阅使用unregister_post_type取消注册帖子类型