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
2071      $term_group = 0;
2072      if ( $alias_of ) {
2073           $alias = $wpdb->get_row( $wpdb->prepare( "SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $alias_of) );
2074           if ( $alias->term_group ) {
2075                // The alias we want is already in a group, so let's use that one.
2076                $term_group = $alias->term_group;
2077           } else {
2078                // The alias isn't in a group, so let's create a new one and firstly add the alias term to it.
2079                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms") + 1;
2080                do_action( 'edit_terms', $alias->term_id );
2081                $wpdb->update($wpdb->terms, compact('term_group'), array('term_id' => $alias->term_id) );
2082                do_action( 'edited_terms', $alias->term_id );
2083           }
2084      }
2085
2086      if ( $term_id = term_exists($slug) ) {
2087           $existing_term = $wpdb->get_row( $wpdb->prepare( "SELECT name FROM $wpdb->terms WHERE term_id = %d", $term_id), ARRAY_A );
2088           // We've got an existing term in the same taxonomy, which matches the name of the new term:
2089           if ( is_taxonomy_hierarchical($taxonomy) && $existing_term['name'] == $name && $exists = term_exists( (int) $term_id, $taxonomy ) ) {
 
Line Code
2112           $slug = wp_unique_term_slug($slug, (object) $args);
2113           if ( false === $wpdb->insert( $wpdb->terms, compact( 'name', 'slug', 'term_group' ) ) )
2114                return new WP_Error('db_insert_error', __('Could not insert term into the database'), $wpdb->last_error);
2115           $term_id = (int) $wpdb->insert_id;
2116      }
2117
2118      // Seems unreachable, However, Is used in the case that a term name is provided, which sanitizes to an empty string.
2119      if ( empty($slug) ) {
2120           $slug = sanitize_title($slug, $term_id);
2121           do_action( 'edit_terms', $term_id );
2122           $wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
2123           do_action( 'edited_terms', $term_id );
2124      }
2125
2126      $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 ) );
2127
2128      if ( !empty($tt_id) )
2129           return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
2130
 
Line Code
2470
2471      if ( $alias_of ) {
2472           $alias = $wpdb->get_row( $wpdb->prepare( "SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $alias_of) );
2473           if ( $alias->term_group ) {
2474                // The alias we want is already in a group, so let's use that one.
2475                $term_group = $alias->term_group;
2476           } else {
2477                // The alias isn't in a group, so let's create a new one and firstly add the alias term to it.
2478                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms") + 1;
2479                do_action( 'edit_terms', $alias->term_id );
2480                $wpdb->update( $wpdb->terms, compact('term_group'), array( 'term_id' => $alias->term_id ) );
2481                do_action( 'edited_terms', $alias->term_id );
2482           }
2483      }
2484
2485      // Check $parent to see if it will cause a hierarchy loop
2486      $parent = apply_filters( 'wp_update_term_parent', $parent, $term_id, $taxonomy, compact( array_keys( $args ) ), $args );
2487
2488      // Check for duplicate slug
2489      $id = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms WHERE slug = %s", $slug ) );
2490      if ( $id && ($id != $term_id) ) {
2491           // If an empty slug was passed or the parent changed, reset the slug to something unique.
2492           // Otherwise, bail.
2493           if ( $empty_slug || ( $parent != $term['parent']) )
2494                $slug = wp_unique_term_slug($slug, (object) $args);
2495           else
2496                return new WP_Error('duplicate_term_slug', sprintf(__('The slug “%s” is already in use by another term'), $slug));
2497      }
2498      do_action( 'edit_terms', $term_id );
2499      $wpdb->update($wpdb->terms, compact( 'name', 'slug', 'term_group' ), compact( 'term_id' ) );
2500      if ( empty($slug) ) {
2501           $slug = sanitize_title($name, $term_id);
2502           $wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
2503      }
2504      do_action( 'edited_terms', $term_id );
2505
2506      $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) );
2507      do_action( 'edit_term_taxonomy', $tt_id, $taxonomy );