Definition:
function wp_delete_term( $term, $taxonomy, $args = array() {}
Removes a term from the database.
If the term is a parent of other terms, then the children will be updated to that term’s parent.
Parameters
- int $term: Term ID
- string $taxonomy: Taxonomy Name
- array|string $args: Optional. Change ‘default’ term id and override found term ids.
Return values
returns:Returns false if not term; true if completes delete action.
Defined actions
- edit_term_taxonomies
do_action( 'edit_term_taxonomies', $edit_tt_ids );
- edited_term_taxonomies
do_action( 'edited_term_taxonomies', $edit_tt_ids );
- delete_term_taxonomy
do_action( 'delete_term_taxonomy', $tt_id );
- deleted_term_taxonomy
do_action( 'deleted_term_taxonomy', $tt_id );
- delete_term
do_action('delete_term', $term, $tt_id, $taxonomy);
- delete_$taxonomy
do_action("delete_$taxonomy", $term, $tt_id);
Source code
function wp_delete_term( $term, $taxonomy, $args = array() ) { global $wpdb; $term = (int) $term; if ( ! $ids = term_exists($term, $taxonomy) ) return false; if ( is_wp_error( $ids ) ) return $ids; $tt_id = $ids['term_taxonomy_id']; $defaults = array(); if ( 'category' == $taxonomy ) { $defaults['default'] = get_option( 'default_category' ); if ( $defaults['default'] == $term ) return 0; // Don't delete the default category } $args = wp_parse_args($args, $defaults); extract($args, EXTR_SKIP); if ( isset( $default ) ) { $default = (int) $default; if ( ! term_exists($default, $taxonomy) ) unset($default); } // Update children to point to new parent if ( is_taxonomy_hierarchical($taxonomy) ) { $term_obj = get_term($term, $taxonomy); if ( is_wp_error( $term_obj ) ) return $term_obj; $parent = $term_obj->parent; $edit_tt_ids = $wpdb->get_col( "SELECT `term_taxonomy_id` FROM $wpdb->term_taxonomy WHERE `parent` = " . (int)$term_obj->term_id ); do_action( 'edit_term_taxonomies', $edit_tt_ids ); $wpdb->update( $wpdb->term_taxonomy, compact( 'parent' ), array( 'parent' => $term_obj->term_id) + compact( 'taxonomy' ) ); do_action( 'edited_term_taxonomies', $edit_tt_ids ); } $objects = $wpdb->get_col( $wpdb->prepare( "SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $tt_id ) ); foreach ( (array) $objects as $object ) { $terms = wp_get_object_terms($object, $taxonomy, array('fields' => 'ids', 'orderby' => 'none')); if ( 1 == count($terms) && isset($default) ) { $terms = array($default); } else { $terms = array_diff($terms, array($term)); if (isset($default) && isset($force_default) && $force_default) $terms = array_merge($terms, array($default)); } $terms = array_map('intval', $terms); wp_set_object_terms($object, $terms, $taxonomy); } // Clean the relationship caches for all object types using this term $tax_object = get_taxonomy( $taxonomy ); foreach ( $tax_object->object_type as $object_type ) clean_object_term_cache( $objects, $object_type ); do_action( 'delete_term_taxonomy', $tt_id ); $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->term_taxonomy WHERE term_taxonomy_id = %d", $tt_id ) ); do_action( 'deleted_term_taxonomy', $tt_id ); // Delete the term if no taxonomies use it. if ( !$wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_taxonomy WHERE term_id = %d", $term) ) ) $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->terms WHERE term_id = %d", $term) ); clean_term_cache($term, $taxonomy); do_action('delete_term', $term, $tt_id, $taxonomy); do_action("delete_$taxonomy", $term, $tt_id); return true; }
3599
No comments yet... Be the first to leave a reply!