wp_delete_term()
wp_delete_term( int $term, string $taxonomy, array|stri…
wp_delete_term( int $term, string $taxonomy, array|string $args = array() )
从数据库中删除术语。
Removes a term from the database.
从数据库中删除术语。
Removes a term from the database.
目录锚点:#说明#参数#源码#笔记
说明(Description)
如果术语是其他术语的父项,则子项将更新为该术语的父项。将删除与术语关联的元数据。
参数(Parameters)
| 参数 | 类型 | 说明 |
|---|---|---|
| $term | (int) | 术语ID。 |
| $taxonomy | (string) | 分类名称。 |
| $args | (array | string) | 重写默认术语ID的参数数组。“default”(int)创建默认术语的术语ID。只有在找到一个术语时,这将覆盖找到的术语。使用任何其他和找到的术语。 |
| ‘force_default'(bool) Optional. Whether to force the supplied term as default to be assigned even if the object was not going to be term-less. Default false. |
源码(Source)
/**
* 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.
*
* The `$args` 'default' will only override the terms found, if there is only one
* term found. Any other and the found terms are used.
*
* The $args 'force_default' will force the term supplied as default to be
* assigned even if the object was not going to be termless
*
* @todo Document $args as a hash notation.
*
* @since 2.3.0
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param int $term Term ID.
* @param string $taxonomy Taxonomy Name.
* @param array|string $args Optional. Change 'default' term id and override found term ids.
* @return bool|int|WP_Error Returns false if not term; true if completes delete action.
*/
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);
if ( isset( $args['default'] ) ) {
$default = (int) $args['default'];
if ( ! term_exists( $default, $taxonomy ) ) {
unset( $default );
}
}
if ( isset( $args['force_default'] ) ) {
$force_default = $args['force_default'];
}
/**
* Fires when deleting a term, before any modifications are made to posts or terms.
*
* @since 4.1.0
*
* @param int $term Term ID.
* @param string $taxonomy Taxonomy Name.
*/
do_action( 'pre_delete_term', $term, $taxonomy );
// 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_ids = $wpdb->get_results( "SELECT term_id, term_taxonomy_id FROM $wpdb->term_taxonomy WHERE `parent` = " . (int)$term_obj->term_id );
$edit_tt_ids = wp_list_pluck( $edit_ids, 'term_taxonomy_id' );
/**
* Fires immediately before a term to delete's children are reassigned a parent.
*
* @since 2.9.0
*
* @param array $edit_tt_ids An array of term taxonomy IDs for the given term.
*/
do_action( 'edit_term_taxonomies', $edit_tt_ids );
$wpdb->update( $wpdb->term_taxonomy, compact( 'parent' ), array( 'parent' => $term_obj->term_id) + compact( 'taxonomy' ) );
// Clean the cache for all child terms.
$edit_term_ids = wp_list_pluck( $edit_ids, 'term_id' );
clean_term_cache( $edit_term_ids, $taxonomy );
/**
* Fires immediately after a term to delete's children are reassigned a parent.
*
* @since 2.9.0
*
* @param array $edit_tt_ids An array of term taxonomy IDs for the given term.
*/
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 );
// Get the object before deletion so we can pass to actions below
$deleted_term = get_term( $term, $taxonomy );
/**
* Fires immediately before a term taxonomy ID is deleted.
*
* @since 2.9.0
*
* @param int $tt_id Term taxonomy ID.
*/
do_action( 'delete_term_taxonomy', $tt_id );
$wpdb->delete( $wpdb->term_taxonomy, array( 'term_taxonomy_id' => $tt_id ) );
/**
* Fires immediately after a term taxonomy ID is deleted.
*
* @since 2.9.0
*
* @param int $tt_id Term taxonomy 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->delete( $wpdb->terms, array( 'term_id' => $term ) );
clean_term_cache($term, $taxonomy);
/**
* Fires after a term is deleted from the database and the cache is cleaned.
*
* @since 2.5.0
*
* @param int $term Term ID.
* @param int $tt_id Term taxonomy ID.
* @param string $taxonomy Taxonomy slug.
* @param mixed $deleted_term Copy of the already-deleted term, in the form specified
* by the parent function. WP_Error otherwise.
*/
do_action( 'delete_term', $term, $tt_id, $taxonomy, $deleted_term );
/**
* Fires after a term in a specific taxonomy is deleted.
*
* The dynamic portion of the hook name, `$taxonomy`, refers to the specific
* taxonomy the term belonged to.
*
* @since 2.3.0
*
* @param int $term Term ID.
* @param int $tt_id Term taxonomy ID.
* @param mixed $deleted_term Copy of the already-deleted term, in the form specified
* by the parent function. WP_Error otherwise.
*/
do_action( "delete_$taxonomy", $term, $tt_id, $deleted_term );
return true;
}| 更新版本 | 源码位置 | 使用 | 被使用 |
|---|---|---|---|
| 2.3.0 | wp-includes/taxonomy.php | 14 | 8 |
笔记(Notes)
基本示例
类别:WordPress 函数手册、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

还没有任何评论,赶紧来占个楼吧!