如何在卸载插件时删除特定于插件的自定义分类术语?

时间:2012-12-27 作者:Shaun Scovil

我正在尝试编写一个类,该类允许在卸载插件时轻松删除所有与插件相关的数据。具体来说,我希望它删除插件选项、自定义帖子类型条目和自定义分类法及其术语。

我写的大部分内容都很有效,但get\\u terms函数返回“invalid\\u taxonomy”错误。进一步研究,我发现全局$wp\\U分类法无法识别卸载期间插件创建的自定义分类法。php进程。

所以我的问题是:卸载插件时,如何删除自定义分类术语?

这是我的代码:http://pastebin.com/geH1wzRC

如果你能告诉我如果两个插件都包含这个类,如何避免加载两次,那么你就可以获得额外的积分。我试着把全班都收起来if( !class_exists( \'WP_Plugin_Janitor\' ) ) { ... } 但是类从未加载。

EDIT 通过将类放在单独的文件中并包装include_once 中的声明if( !class_exists( 陈述

提前感谢!

1 个回复
SO网友:s_ha_dum

您应该使用register_deactivation_hook 和/或register_uninstall_hooks. 这可能就是某些函数不起作用的原因。我必须做一些测试才能确定,但是直接加载您的方法WP_Plugin_Janitor::cleanup( $opt, $cpt, $tax ); 似乎是跳过WordPress加载序列或无序运行的一种很好的方法。

至于两次加载这个类,我有一个答案,但这是一个不同的问题,并不是WordPress特有的。:)

结束

相关推荐

排除自定义分类术语分隔符wp_get_post_Terms

我试图从存档页面中排除一个自定义分类法,然后显示返回帖子的术语。当我运行WP\\u Query排除自定义术语时,它会正确返回帖子,但在使用wp_get_post_terms(). 我怀疑,不进行正向查询会阻止它获取术语。下面是我的代码:$query = new WP_Query( array( \'tax_query\' => array( array( \'taxonomy\' =&g