我正在编写插件的卸载。php文件,并希望它删除插件自定义分类法中创建的任何术语。
在插件的卸载中。我正在使用的php文件:
// Delete all custom terms for this taxonomy
$terms = get_terms(\'custom_taxonomy\');
foreach ($terms as $term) {
wp_delete_term( $term->ID, \'custom_taxonomy\' );
}
问题似乎是此时未注册自定义分类法,因此get\\u terms会返回“无效分类法”错误,因此我无法以这种方式删除自定义术语,这似乎是最简单的方法。
如果卸载时未注册自定义分类法。php被称为,我如何拥有它,以便我的插件能够清理它的自定义数据?
非常感谢您的帮助。
谢谢
最合适的回答,由SO网友:brasofilo 整理而成
使用卸载挂钩是合法的if it worked, 但它会转储与卸载文件相同的错误。当它加载主插件文件以执行卸载功能时,它将有更多的机会工作,但如果分类法不再注册(并且不再注册,因为我们需要在卸载之前停用),WP将无法使用get_terms
.
调整以下功能this Stack Overflow answer 应完成以下工作:
function load_terms($taxonomy){
global $wpdb;
$query = \'SELECT DISTINCT
t.name
FROM
`wp-cls`.wp_terms t
INNER JOIN
`wp-cls`.wp_term_taxonomy tax
ON
`tax`.term_id = `t`.term_id
WHERE
( `tax`.taxonomy = \\\'\' . $taxonomy . \'\\\')\';
$result = $wpdb->get_results($query , ARRAY_A);
return $result;
}