问题是分类法的WordPress数据库模式。在数据库中,具有相同slug的两个不同分类中的两个术语共享术语表中的同一行。它们在terms\\u taxonomy表中有两行进行区分。
因此,如果只想删除类别,则必须在WordPress数据库上执行自定义sql。
我为pourpose编写了一个函数:
function delete_slug_sharing_term( $slug = \'\', $taxonomy = \'category\' ) {
$term = get_term_by( \'slug\', sanitize_title($slug), $taxonomy );
if ( empty($term) || is_wp_error($term) ) return FALSE;
global $wpdb;
$q = "DELETE FROM $wpdb->term_taxonomy
WHERE taxonomy = %s
AND term_taxonomy_id = %d";
return (bool) $wpdb->query( $wpdb->prepare( $q, $taxonomy, $term->term_taxonomy_id) );
}
这样使用:
delete_slug_sharing_term( \'animals\', \'category\' );
你需要打电话
only once, 因此,放在某个地方(可能在“admin\\u init”上),在仪表板上检查类别是否已删除,如果已删除,请删除函数调用(如果需要,也可以删除函数)。