Menu Adam R Brown

WP hooks navigation: Home/browseActions indexFilters index

Source View: edit_terms

To save our bandwidth, we show only a snippet of code around each occurence of the hook. View complete file in SVN (without highlighting).

Understanding Source Code

The best way to understand what a hook does is to look at where it occurs in the source code.

Remember, this hook may occur in more than one file. Moreover, the hook's context may change from version to version.

Source View

This hook occurs 4 times in this file.

Line Code
2151      $term_group = 0;
2152      if ( $alias_of ) {
2153           $alias = $wpdb->get_row( $wpdb->prepare( "SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $alias_of) );
2154           if ( $alias->term_group ) {
2155                // The alias we want is already in a group, so let's use that one.
2156                $term_group = $alias->term_group;
2157           } else {
2158                // The alias isn't in a group, so let's create a new one and firstly add the alias term to it.
2159                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms") + 1;
2160                do_action( 'edit_terms', $alias->term_id, $taxonomy );
2161                $wpdb->update($wpdb->terms, compact('term_group'), array('term_id' => $alias->term_id) );
2162                do_action( 'edited_terms', $alias->term_id, $taxonomy );
2163           }
2164      }
2165
2166      if ( $term_id = term_exists($slug) ) {
2167           $existing_term = $wpdb->get_row( $wpdb->prepare( "SELECT name FROM $wpdb->terms WHERE term_id = %d", $term_id), ARRAY_A );
2168           // We've got an existing term in the same taxonomy, which matches the name of the new term:
2169           if ( is_taxonomy_hierarchical($taxonomy) && $existing_term['name'] == $name && $exists = term_exists( (int) $term_id, $taxonomy ) ) {
 
Line Code
2196           $slug = wp_unique_term_slug($slug, (object) $args);
2197           if ( false === $wpdb->insert( $wpdb->terms, compact( 'name', 'slug', 'term_group' ) ) )
2198                return new WP_Error('db_insert_error', __('Could not insert term into the database'), $wpdb->last_error);
2199           $term_id = (int) $wpdb->insert_id;
2200      }
2201
2202      // Seems unreachable, However, Is used in the case that a term name is provided, which sanitizes to an empty string.
2203      if ( empty($slug) ) {
2204           $slug = sanitize_title($slug, $term_id);
2205           do_action( 'edit_terms', $term_id, $taxonomy );
2206           $wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
2207           do_action( 'edited_terms', $term_id, $taxonomy );
2208      }
2209
2210      $tt_id = $wpdb->get_var( $wpdb->prepare( "SELECT tt.term_taxonomy_id FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d", $taxonomy, $term_id ) );
2211
2212      if ( !empty($tt_id) )
2213           return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
2214
 
Line Code
2554
2555      if ( $alias_of ) {
2556           $alias = $wpdb->get_row( $wpdb->prepare( "SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $alias_of) );
2557           if ( $alias->term_group ) {
2558                // The alias we want is already in a group, so let's use that one.
2559                $term_group = $alias->term_group;
2560           } else {
2561                // The alias isn't in a group, so let's create a new one and firstly add the alias term to it.
2562                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms") + 1;
2563                do_action( 'edit_terms', $alias->term_id, $taxonomy );
2564                $wpdb->update( $wpdb->terms, compact('term_group'), array( 'term_id' => $alias->term_id ) );
2565                do_action( 'edited_terms', $alias->term_id, $taxonomy );
2566           }
2567      }
2568
2569      // Check $parent to see if it will cause a hierarchy loop
2570      $parent = apply_filters( 'wp_update_term_parent', $parent, $term_id, $taxonomy, compact( array_keys( $args ) ), $args );
2571
2572      // Check for duplicate slug
2573      $id = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms WHERE slug = %s", $slug ) );
2574      if ( $id && ($id != $term_id) ) {
2575           // If an empty slug was passed or the parent changed, reset the slug to something unique.
2576           // Otherwise, bail.
2577           if ( $empty_slug || ( $parent != $term['parent']) )
2578                $slug = wp_unique_term_slug($slug, (object) $args);
2579           else
2580                return new WP_Error('duplicate_term_slug', sprintf(__('The slug “%s” is already in use by another term'), $slug));
2581      }
2582      do_action( 'edit_terms', $term_id, $taxonomy );
2583      $wpdb->update($wpdb->terms, compact( 'name', 'slug', 'term_group' ), compact( 'term_id' ) );
2584      if ( empty($slug) ) {
2585           $slug = sanitize_title($name, $term_id);
2586           $wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
2587      }
2588      do_action( 'edited_terms', $term_id, $taxonomy );
2589
2590      $tt_id = $wpdb->get_var( $wpdb->prepare( "SELECT tt.term_taxonomy_id FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d", $taxonomy, $term_id) );
2591      do_action( 'edit_term_taxonomy', $tt_id, $taxonomy );