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
2003      $term_group = 0;
2004      if ( $alias_of ) {
2005           $alias = $wpdb->get_row( $wpdb->prepare( "SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $alias_of) );
2006           if ( $alias->term_group ) {
2007                // The alias we want is already in a group, so let's use that one.
2008                $term_group = $alias->term_group;
2009           } else {
2010                // The alias isn't in a group, so let's create a new one and firstly add the alias term to it.
2011                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms") + 1;
2012                do_action( 'edit_terms', $alias->term_id );
2013                $wpdb->update($wpdb->terms, compact('term_group'), array('term_id' => $alias->term_id) );
2014                do_action( 'edited_terms', $alias->term_id );
2015           }
2016      }
2017
2018      if ( $term_id = term_exists($slug) ) {
2019           $existing_term = $wpdb->get_row( $wpdb->prepare( "SELECT name FROM $wpdb->terms WHERE term_id = %d", $term_id), ARRAY_A );
2020           // We've got an existing term in the same taxonomy, which matches the name of the new term:
2021           if ( is_taxonomy_hierarchical($taxonomy) && $existing_term['name'] == $name && $exists = term_exists( (int) $term_id, $taxonomy ) ) {
 
Line Code
2044           $slug = wp_unique_term_slug($slug, (object) $args);
2045           if ( false === $wpdb->insert( $wpdb->terms, compact( 'name', 'slug', 'term_group' ) ) )
2046                return new WP_Error('db_insert_error', __('Could not insert term into the database'), $wpdb->last_error);
2047           $term_id = (int) $wpdb->insert_id;
2048      }
2049
2050      // Seems unreachable, However, Is used in the case that a term name is provided, which sanitizes to an empty string.
2051      if ( empty($slug) ) {
2052           $slug = sanitize_title($slug, $term_id);
2053           do_action( 'edit_terms', $term_id );
2054           $wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
2055           do_action( 'edited_terms', $term_id );
2056      }
2057
2058      $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 ) );
2059
2060      if ( !empty($tt_id) )
2061           return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
2062
 
Line Code
2315
2316      if ( $alias_of ) {
2317           $alias = $wpdb->get_row( $wpdb->prepare( "SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $alias_of) );
2318           if ( $alias->term_group ) {
2319                // The alias we want is already in a group, so let's use that one.
2320                $term_group = $alias->term_group;
2321           } else {
2322                // The alias isn't in a group, so let's create a new one and firstly add the alias term to it.
2323                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms") + 1;
2324                do_action( 'edit_terms', $alias->term_id );
2325                $wpdb->update( $wpdb->terms, compact('term_group'), array( 'term_id' => $alias->term_id ) );
2326                do_action( 'edited_terms', $alias->term_id );
2327           }
2328      }
2329
2330      // Check $parent to see if it will cause a hierarchy loop
2331      $parent = apply_filters( 'wp_update_term_parent', $parent, $term_id, $taxonomy, compact( array_keys( $args ) ), $args );
2332
2333      // Check for duplicate slug
2334      $id = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms WHERE slug = %s", $slug ) );
2335      if ( $id && ($id != $term_id) ) {
2336           // If an empty slug was passed or the parent changed, reset the slug to something unique.
2337           // Otherwise, bail.
2338           if ( $empty_slug || ( $parent != $term['parent']) )
2339                $slug = wp_unique_term_slug($slug, (object) $args);
2340           else
2341                return new WP_Error('duplicate_term_slug', sprintf(__('The slug “%s” is already in use by another term'), $slug));
2342      }
2343      do_action( 'edit_terms', $term_id );
2344      $wpdb->update($wpdb->terms, compact( 'name', 'slug', 'term_group' ), compact( 'term_id' ) );
2345      if ( empty($slug) ) {
2346           $slug = sanitize_title($name, $term_id);
2347           $wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
2348      }
2349      do_action( 'edited_terms', $term_id );
2350
2351      $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) );
2352      do_action( 'edit_term_taxonomy', $tt_id, $taxonomy );