<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[27827] trunk/src/wp-includes/taxonomy.php: Inline documentation for hooks in wp-includes/taxonomy.php.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://core.trac.wordpress.org/changeset/27827">27827</a></dd>
<dt>Author</dt> <dd>DrewAPicture</dd>
<dt>Date</dt> <dd>2014-03-28 21:28:23 +0000 (Fri, 28 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Inline documentation for hooks in wp-includes/taxonomy.php.

Props kpdesign for some minor language tweaks.
Fixes <a href="http://core.trac.wordpress.org/ticket/27505">#27505</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpincludestaxonomyphp">trunk/src/wp-includes/taxonomy.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpincludestaxonomyphp"></a>
<div class="modfile"><h4>Modified: trunk/src/wp-includes/taxonomy.php (27826 => 27827)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/src/wp-includes/taxonomy.php       2014-03-28 21:23:44 UTC (rev 27826)
+++ trunk/src/wp-includes/taxonomy.php  2014-03-28 21:28:23 UTC (rev 27827)
</span><span class="lines">@@ -24,6 +24,14 @@
</span><span class="cx">  if ( ! did_action( 'init' ) ) {
</span><span class="cx">          $rewrite = array( 'category' => false, 'post_tag' => false, 'post_format' => false );
</span><span class="cx">  } else {
</span><ins>+
+               /**
+                * Filter the post formats rewrite base.
+                *
+                * @since 3.1.0
+                *
+                * @param string $context Context of the rewrite base. Default 'type'.
+                */
</ins><span class="cx">           $post_format_base = apply_filters( 'post_format_rewrite_base', 'type' );
</span><span class="cx">          $rewrite = array(
</span><span class="cx">                  'category' => array(
</span><span class="lines">@@ -412,6 +420,15 @@
</span><span class="cx">  // register callback handling for metabox
</span><span class="cx">          add_filter( 'wp_ajax_add-' . $taxonomy, '_wp_ajax_add_hierarchical_term' );
</span><span class="cx"> 
</span><ins>+       /**
+        * Fires after a taxonomy is registered.
+        *
+        * @since 3.3.0
+        *
+        * @param string       $taxonomy    Taxonomy slug.
+        * @param array|string $object_type Object type or array of object types.
+        * @param array|string $args        Array or string of taxonomy registration arguments.
+        */
</ins><span class="cx">   do_action( 'registered_taxonomy', $taxonomy, $object_type, $args );
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -946,8 +963,28 @@
</span><span class="cx">          }
</span><span class="cx">  }
</span><span class="cx"> 
</span><del>-       $_term = apply_filters('get_term', $_term, $taxonomy);
-       $_term = apply_filters("get_$taxonomy", $_term, $taxonomy);
</del><ins>+        /**
+        * Filter a term.
+        *
+        * @since 2.3.0
+        *
+        * @param int|object $_term    Term object or ID.
+        * @param string     $taxonomy The taxonomy slug.
+        */
+       $_term = apply_filters( 'get_term', $_term, $taxonomy );
+
+       /**
+        * Filter a taxonomy.
+        *
+        * The dynamic portion of the filter name, $taxonomy, refers
+        * to the taxonomy slug.
+        *
+        * @since 2.3.0
+        *
+        * @param int|object $_term    Term object or ID.
+        * @param string     $taxonomy The taxonomy slug.
+        */
+       $_term = apply_filters( "get_$taxonomy", $_term, $taxonomy );
</ins><span class="cx">   $_term = sanitize_term($_term, $taxonomy, $filter);
</span><span class="cx"> 
</span><span class="cx">  if ( $output == OBJECT ) {
</span><span class="lines">@@ -1019,8 +1056,12 @@
</span><span class="cx"> 
</span><span class="cx">  wp_cache_add($term->term_id, $term, $taxonomy);
</span><span class="cx"> 
</span><del>-       $term = apply_filters('get_term', $term, $taxonomy);
-       $term = apply_filters("get_$taxonomy", $term, $taxonomy);
</del><ins>+        /** This filter is documented in wp-includes/taxonomy.php */
+       $term = apply_filters( 'get_term', $term, $taxonomy );
+
+       /** This filter is documented in wp-includes/taxonomy.php */
+       $term = apply_filters( "get_$taxonomy", $term, $taxonomy );
+
</ins><span class="cx">   $term = sanitize_term($term, $taxonomy, $filter);
</span><span class="cx"> 
</span><span class="cx">  if ( $output == OBJECT ) {
</span><span class="lines">@@ -1266,6 +1307,14 @@
</span><span class="cx">          $args['pad_counts'] = false;
</span><span class="cx">  }
</span><span class="cx"> 
</span><ins>+       /**
+        * Filter the terms query arguments.
+        *
+        * @since 3.1.0
+        *
+        * @param array        $args       An array of arguments.
+        * @param string|array $taxonomies A taxonomy or array of taxonomies.
+        */
</ins><span class="cx">   $args = apply_filters( 'get_terms_args', $args, $taxonomies );
</span><span class="cx"> 
</span><span class="cx">  extract($args, EXTR_SKIP);
</span><span class="lines">@@ -1293,7 +1342,17 @@
</span><span class="cx">  $cache_key = "get_terms:$key:$last_changed";
</span><span class="cx">  $cache = wp_cache_get( $cache_key, 'terms' );
</span><span class="cx">  if ( false !== $cache ) {
</span><del>-               $cache = apply_filters('get_terms', $cache, $taxonomies, $args);
</del><ins>+
+               /**
+                * Filter the given taxonomy's terms cache.
+                *
+                * @since 2.3.0
+                *
+                * @param array        $cache      Cached array of terms for the given taxonomy.
+                * @param string|array $taxonomies A taxonomy or array of taxonomies.
+                * @param array        $args       An array of arguments to get terms.
+                */
+               $cache = apply_filters( 'get_terms', $cache, $taxonomies, $args );
</ins><span class="cx">           return $cache;
</span><span class="cx">  }
</span><span class="cx"> 
</span><span class="lines">@@ -1313,6 +1372,15 @@
</span><span class="cx">  else
</span><span class="cx">          $orderby = 't.name';
</span><span class="cx"> 
</span><ins>+       /**
+        * Filter the ORDERBY clause of the terms query.
+        *
+        * @since 2.8.0
+        *
+        * @param string       $orderby    ORDERBY clause of the terms query.
+        * @param array        $args       An array of terms query arguments.
+        * @param string|array $taxonomies A taxonomy or array of taxonomies.
+        */
</ins><span class="cx">   $orderby = apply_filters( 'get_terms_orderby', $orderby, $args, $taxonomies );
</span><span class="cx"> 
</span><span class="cx">  if ( !empty($orderby) )
</span><span class="lines">@@ -1361,6 +1429,15 @@
</span><span class="cx">  if ( ! empty( $exclusions ) )
</span><span class="cx">          $exclusions = ' AND t.term_id NOT IN (' . $exclusions . ')';
</span><span class="cx"> 
</span><ins>+       /**
+        * Filter the terms to exclude from the terms query.
+        *
+        * @since 2.3.0
+        *
+        * @param string       $exclusions NOT IN clause of the terms query.
+        * @param array        $args       An array of terms query arguments.
+        * @param string|array $taxonomies A taxonomy or array of taxonomies.
+        */
</ins><span class="cx">   $exclusions = apply_filters( 'list_terms_exclusions', $exclusions, $args, $taxonomies );
</span><span class="cx"> 
</span><span class="cx">  if ( ! empty( $exclusions ) )
</span><span class="lines">@@ -1434,11 +1511,30 @@
</span><span class="cx"> 
</span><span class="cx">  $_fields = $fields;
</span><span class="cx"> 
</span><ins>+       /**
+        * Filter the fields to select in the terms query.
+        *
+        * @since 2.8.0
+        *
+        * @param array        $selects    An array of fields to select for the terms query.
+        * @param array        $args       An array of term query arguments.
+        * @param string|array $taxonomies A taxonomy or array of taxonomies.
+        */
</ins><span class="cx">   $fields = implode( ', ', apply_filters( 'get_terms_fields', $selects, $args, $taxonomies ) );
</span><span class="cx"> 
</span><span class="cx">  $join = "INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id";
</span><span class="cx"> 
</span><span class="cx">  $pieces = array( 'fields', 'join', 'where', 'orderby', 'order', 'limits' );
</span><ins>+
+       /**
+        * Filter the terms query SQL clauses.
+        *
+        * @since 3.1.0
+        *
+        * @param array        $pieces     Terms query SQL clauses.
+        * @param string|array $taxonomies A taxonomy or array of taxonomies.
+        * @param array        $args       An array of terms query arguments.
+        */
</ins><span class="cx">   $clauses = apply_filters( 'terms_clauses', compact( $pieces ), $taxonomies, $args );
</span><span class="cx">  foreach ( $pieces as $piece )
</span><span class="cx">          $$piece = isset( $clauses[ $piece ] ) ? $clauses[ $piece ] : '';
</span><span class="lines">@@ -1459,7 +1555,9 @@
</span><span class="cx"> 
</span><span class="cx">  if ( empty($terms) ) {
</span><span class="cx">          wp_cache_add( $cache_key, array(), 'terms', DAY_IN_SECONDS );
</span><del>-               $terms = apply_filters('get_terms', array(), $taxonomies, $args);
</del><ins>+
+               /** This filter is documented in wp-includes/taxonomy.php */
+               $terms = apply_filters( 'get_terms', array(), $taxonomies, $args );
</ins><span class="cx">           return $terms;
</span><span class="cx">  }
</span><span class="cx"> 
</span><span class="lines">@@ -1520,6 +1618,7 @@
</span><span class="cx"> 
</span><span class="cx">  wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS );
</span><span class="cx"> 
</span><ins>+       /** This filter is documented in wp-includes/taxonomy */
</ins><span class="cx">   $terms = apply_filters( 'get_terms', $terms, $taxonomies, $args );
</span><span class="cx">  return $terms;
</span><span class="cx"> }
</span><span class="lines">@@ -1694,26 +1793,130 @@
</span><span class="cx">          return $value;
</span><span class="cx"> 
</span><span class="cx">  if ( 'edit' == $context ) {
</span><del>-               $value = apply_filters("edit_term_{$field}", $value, $term_id, $taxonomy);
-               $value = apply_filters("edit_{$taxonomy}_{$field}", $value, $term_id);
</del><ins>+
+               /**
+                * Filter a term field to edit before it is sanitized.
+                *
+                * The dynamic portion of the filter name, $field, refers to the term field.
+                *
+                * @since 2.3.0
+                *
+                * @param mixed $value     Value of the term field.
+                * @param int   $term_id   Term ID.
+                * @param string $taxonomy Taxonomy slug.
+                */
+               $value = apply_filters( "edit_term_{$field}", $value, $term_id, $taxonomy );
+
+               /**
+                * Filter the taxonomy field to edit before it is sanitized.
+                *
+                * The dynamic portions of the filter name, $taxonomy, and $field, refer
+                * to the taxonomy slug and taxonomy field, respectively.
+                *
+                * @since 2.3.0
+                *
+                * @param mixed $value   Value of the taxonomy field to edit.
+                * @param int   $term_id Term ID.
+                */
+               $value = apply_filters( "edit_{$taxonomy}_{$field}", $value, $term_id );
</ins><span class="cx">           if ( 'description' == $field )
</span><span class="cx">                  $value = esc_html($value); // textarea_escaped
</span><span class="cx">          else
</span><span class="cx">                  $value = esc_attr($value);
</span><span class="cx">  } else if ( 'db' == $context ) {
</span><del>-               $value = apply_filters("pre_term_{$field}", $value, $taxonomy);
-               $value = apply_filters("pre_{$taxonomy}_{$field}", $value);
</del><ins>+
+               /**
+                * Filter a term field value before it is sanitized.
+                *
+                * The dynamic portion of the filter name, $field, refers to the term field.
+                *
+                * @since 2.3.0
+                *
+                * @param mixed  $value    Value of the term field.
+                * @param string $taxonomy Taxonomy slug.
+                */
+               $value = apply_filters( "pre_term_{$field}", $value, $taxonomy );
+
+               /**
+                * Filter a taxonomy field before it is sanitized.
+                *
+                * The dynamic portions of the filter name, $taxonomy, and $field, refer
+                * to the taxonomy slug and field name, respectively.
+                *
+                * @since 2.3.0
+                *
+                * @param mixed $value Value of the taxonomy field.
+                */
+               $value = apply_filters( "pre_{$taxonomy}_{$field}", $value );
</ins><span class="cx">           // Back compat filters
</span><del>-               if ( 'slug' == $field )
-                       $value = apply_filters('pre_category_nicename', $value);
</del><ins>+                if ( 'slug' == $field ) {
+                       /**
+                        * Filter the category nicename before it is sanitized.
+                        *
+                        * Use the pre_{$taxonomy}_{$field} hook instead.
+                        *
+                        * @since 2.0.3
+                        *
+                        * @param string $value The category nicename.
+                        */
+                       $value = apply_filters( 'pre_category_nicename', $value );
+               }
</ins><span class="cx"> 
</span><span class="cx">  } else if ( 'rss' == $context ) {
</span><del>-               $value = apply_filters("term_{$field}_rss", $value, $taxonomy);
-               $value = apply_filters("{$taxonomy}_{$field}_rss", $value);
</del><ins>+
+               /**
+                * Filter the term field for use in RSS.
+                *
+                * The dynamic portion of the filter name, $field, refers to the term field.
+                *
+                * @since 2.3.0
+                *
+                * @param mixed  $value    Value of the term field.
+                * @param string $taxonomy Taxonomy slug.
+                */
+               $value = apply_filters( "term_{$field}_rss", $value, $taxonomy );
+
+               /**
+                * Filter the taxonomy field for use in RSS.
+                *
+                * The dynamic portions of the hook name, $taxonomy, and $field, refer
+                * to the taxonomy slug and field name, respectively.
+                *
+                * @since 2.3.0
+                *
+                * @param mixed $value Value of the taxonomy field.
+                */
+               $value = apply_filters( "{$taxonomy}_{$field}_rss", $value );
</ins><span class="cx">   } else {
</span><span class="cx">          // Use display filters by default.
</span><del>-               $value = apply_filters("term_{$field}", $value, $term_id, $taxonomy, $context);
-               $value = apply_filters("{$taxonomy}_{$field}", $value, $term_id, $context);
</del><ins>+
+               /**
+                * Filter the term field sanitized for display.
+                *
+                * The dynamic portion of the filter name, $field, refers to the term field name.
+                *
+                * @since 2.3.0
+                *
+                * @param mixed  $value    Value of the term field.
+                * @param int    $term_id  Term ID.
+                * @param string $taxonomy Taxonomy slug.
+                * @param string $context  Context to retrieve the term field value.
+                */
+               $value = apply_filters( "term_{$field}", $value, $term_id, $taxonomy, $context );
+
+               /**
+                * Filter the taxonomy field sanitized for display.
+                *
+                * The dynamic portions of the filter name, $taxonomy, and $field, refer
+                * to the taxonomy slug and taxonomy field, respectively.
+                *
+                * @since 2.3.0
+                *
+                * @param mixed  $value   Value of the taxonomy field.
+                * @param int    $term_id Term ID.
+                * @param string $context Context to retrieve the taxonomy field value.
+                */
+               $value = apply_filters( "{$taxonomy}_{$field}", $value, $term_id, $context );
</ins><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">  if ( 'attribute' == $context )
</span><span class="lines">@@ -1794,9 +1997,6 @@
</span><span class="cx">  * @since 2.3.0
</span><span class="cx">  *
</span><span class="cx">  * @uses $wpdb
</span><del>- * @uses do_action() Calls both 'delete_term' and 'delete_$taxonomy' action
- *     hooks, passing term ID, term taxonomy ID, and deleted term object. 'delete_term'
- *     also gets taxonomy as the third parameter.
</del><span class="cx">  *
</span><span class="cx">  * @param int $term Term ID
</span><span class="cx">  * @param string $taxonomy Taxonomy Name
</span><span class="lines">@@ -1840,8 +2040,24 @@
</span><span class="cx">          $parent = $term_obj->parent;
</span><span class="cx"> 
</span><span class="cx">          $edit_tt_ids = $wpdb->get_col( "SELECT `term_taxonomy_id` FROM $wpdb->term_taxonomy WHERE `parent` = " . (int)$term_obj->term_id );
</span><ins>+
+               /**
+                * 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.
+                */
</ins><span class="cx">           do_action( 'edit_term_taxonomies', $edit_tt_ids );
</span><span class="cx">          $wpdb->update( $wpdb->term_taxonomy, compact( 'parent' ), array( 'parent' => $term_obj->term_id) + compact( 'taxonomy' ) );
</span><ins>+
+               /**
+                * 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.
+                */
</ins><span class="cx">           do_action( 'edited_term_taxonomies', $edit_tt_ids );
</span><span class="cx">  }
</span><span class="cx"> 
</span><span class="lines">@@ -1868,8 +2084,23 @@
</span><span class="cx">  // Get the object before deletion so we can pass to actions below
</span><span class="cx">  $deleted_term = get_term( $term, $taxonomy );
</span><span class="cx"> 
</span><ins>+       /**
+        * Fires immediately before a term taxonomy ID is deleted.
+        *
+        * @since 2.9.0
+        *
+        * @param int $tt_id Term taxonomy ID.
+        */
</ins><span class="cx">   do_action( 'delete_term_taxonomy', $tt_id );
</span><span class="cx">  $wpdb->delete( $wpdb->term_taxonomy, array( 'term_taxonomy_id' => $tt_id ) );
</span><ins>+
+       /**
+        * Fires immediately after a term taxonomy ID is deleted.
+        *
+        * @since 2.9.0
+        *
+        * @param int $tt_id Term taxonomy ID.
+        */
</ins><span class="cx">   do_action( 'deleted_term_taxonomy', $tt_id );
</span><span class="cx"> 
</span><span class="cx">  // Delete the term if no taxonomies use it.
</span><span class="lines">@@ -1878,7 +2109,32 @@
</span><span class="cx"> 
</span><span class="cx">  clean_term_cache($term, $taxonomy);
</span><span class="cx"> 
</span><ins>+       /**
+        * 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.
+        */
</ins><span class="cx">   do_action( 'delete_term', $term, $tt_id, $taxonomy, $deleted_term );
</span><ins>+
+       /**
+        * 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.
+        */
</ins><span class="cx">   do_action( "delete_$taxonomy", $term, $tt_id, $deleted_term );
</span><span class="cx"> 
</span><span class="cx">  return true;
</span><span class="lines">@@ -2035,7 +2291,18 @@
</span><span class="cx">  if ( ! $terms )
</span><span class="cx">          $terms = array();
</span><span class="cx"> 
</span><del>-       return apply_filters('wp_get_object_terms', $terms, $object_ids, $taxonomies, $args);
</del><ins>+        /**
+        * Filter the terms for a given object or objects.
+        *
+        * @since 2.8.0
+        *
+        * @param array        $terms      An array of terms for the given object or objects.
+        * @param array|int    $object_ids Object ID or array of IDs.
+        * @param array|string $taxonomies A taxonomy or array of taxonomies.
+        * @param array        $args       An array of arguments for retrieving terms for
+        *                                 the given object(s).
+        */
+       return apply_filters( 'wp_get_object_terms', $terms, $object_ids, $taxonomies, $args );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><span class="lines">@@ -2089,6 +2356,14 @@
</span><span class="cx">  if ( ! taxonomy_exists($taxonomy) )
</span><span class="cx">          return new WP_Error('invalid_taxonomy', __('Invalid taxonomy'));
</span><span class="cx"> 
</span><ins>+       /**
+        * Filter a term before it is sanitized and inserted into the database.
+        *
+        * @since 3.0.0
+        *
+        * @param string $term     The term to add or update.
+        * @param string $taxonomy Taxonomy slug.
+        */
</ins><span class="cx">   $term = apply_filters( 'pre_insert_term', $term, $taxonomy );
</span><span class="cx">          if ( is_wp_error( $term ) )
</span><span class="cx">                  return $term;
</span><span class="lines">@@ -2124,8 +2399,26 @@
</span><span class="cx">          } else {
</span><span class="cx">                  // The alias isn't in a group, so let's create a new one and firstly add the alias term to it.
</span><span class="cx">                  $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms") + 1;
</span><ins>+
+                       /**
+                        * Fires immediately before the given terms are edited.
+                        *
+                        * @since 2.9.0
+                        *
+                        * @param int    $term_id  Term ID.
+                        * @param string $taxonomy Taxonomy slug.
+                        */
</ins><span class="cx">                   do_action( 'edit_terms', $alias->term_id, $taxonomy );
</span><span class="cx">                  $wpdb->update($wpdb->terms, compact('term_group'), array('term_id' => $alias->term_id) );
</span><ins>+
+                       /**
+                        * Fires immediately after the given terms are edited.
+                        *
+                        * @since 2.9.0
+                        *
+                        * @param int    $term_id  Term ID
+                        * @param string $taxonomy Taxonomy slug.
+                        */
</ins><span class="cx">                   do_action( 'edited_terms', $alias->term_id, $taxonomy );
</span><span class="cx">          }
</span><span class="cx">  }
</span><span class="lines">@@ -2169,8 +2462,12 @@
</span><span class="cx">  // Seems unreachable, However, Is used in the case that a term name is provided, which sanitizes to an empty string.
</span><span class="cx">  if ( empty($slug) ) {
</span><span class="cx">          $slug = sanitize_title($slug, $term_id);
</span><ins>+
+               /** This action is documented in wp-includes/taxonomy.php */
</ins><span class="cx">           do_action( 'edit_terms', $term_id, $taxonomy );
</span><span class="cx">          $wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
</span><ins>+
+               /** This action is documented in wp-includes/taxonomy.php */
</ins><span class="cx">           do_action( 'edited_terms', $term_id, $taxonomy );
</span><span class="cx">  }
</span><span class="cx"> 
</span><span class="lines">@@ -2182,16 +2479,60 @@
</span><span class="cx">  $wpdb->insert( $wpdb->term_taxonomy, compact( 'term_id', 'taxonomy', 'description', 'parent') + array( 'count' => 0 ) );
</span><span class="cx">  $tt_id = (int) $wpdb->insert_id;
</span><span class="cx"> 
</span><del>-       do_action("create_term", $term_id, $tt_id, $taxonomy);
-       do_action("create_$taxonomy", $term_id, $tt_id);
</del><ins>+        /**
+        * Fires immediately after a new term is created, before the term cache is cleaned.
+        *
+        * @since 2.3.0
+        *
+        * @param int    $term_id  Term ID.
+        * @param int    $tt_id    Term taxonomy ID.
+        * @param string $taxonomy Taxonomy slug.
+        */
+       do_action( "create_term", $term_id, $tt_id, $taxonomy );
</ins><span class="cx"> 
</span><del>-       $term_id = apply_filters('term_id_filter', $term_id, $tt_id);
</del><ins>+        /**
+        * Fires after a new term is created for a specific taxonomy.
+        *
+        * The dynamic portion of the hook name, $taxonomy, refers
+        * to the slug of the taxonomy the term was created for.
+        *
+        * @since 2.3.0
+        *
+        * @param int $term_id Term ID.
+        * @param int $tt_id   Term taxonomy ID.
+        */
+       do_action( "create_$taxonomy", $term_id, $tt_id );
</ins><span class="cx"> 
</span><ins>+       /**
+        * Filter the term ID after a new term is created.
+        *
+        * @since 2.3.0
+        *
+        * @param int $term_id Term ID.
+        * @param int $tt_id   Taxonomy term ID.
+        */
+       $term_id = apply_filters( 'term_id_filter', $term_id, $tt_id );
+
</ins><span class="cx">   clean_term_cache($term_id, $taxonomy);
</span><span class="cx"> 
</span><del>-       do_action("created_term", $term_id, $tt_id, $taxonomy);
-       do_action("created_$taxonomy", $term_id, $tt_id);
</del><ins>+        /**
+        * Fires after a new term is created, and after the term cache has been cleaned.
+        *
+        * @since 2.3.0
+        */
+       do_action( "created_term", $term_id, $tt_id, $taxonomy );
</ins><span class="cx"> 
</span><ins>+       /**
+        * Fires after a new term in a specific taxonomy is created, and after the term
+        * cache has been cleaned.
+        *
+        * @since 2.3.0
+        *
+        * @param int $term_id Term ID.
+        * @param int $tt_id   Term taxonomy ID.
+        */
+       do_action( "created_$taxonomy", $term_id, $tt_id );
+
</ins><span class="cx">   return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2254,8 +2595,26 @@
</span><span class="cx"> 
</span><span class="cx">          if ( $wpdb->get_var( $wpdb->prepare( "SELECT term_taxonomy_id FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id = %d", $object_id, $tt_id ) ) )
</span><span class="cx">                  continue;
</span><ins>+
+               /**
+                * Fires immediately before an object-term relationship is added.
+                *
+                * @since 2.9.0
+                *
+                * @param int $object_id Object ID.
+                * @param int $tt_id     Term taxonomy ID.
+                */
</ins><span class="cx">           do_action( 'add_term_relationship', $object_id, $tt_id );
</span><span class="cx">          $wpdb->insert( $wpdb->term_relationships, array( 'object_id' => $object_id, 'term_taxonomy_id' => $tt_id ) );
</span><ins>+
+               /**
+                * Fires immediately after an object-term relationship is added.
+                *
+                * @since 2.9.0
+                *
+                * @param int $object_id Object ID.
+                * @param int $tt_id     Term taxonomy ID.
+                */
</ins><span class="cx">           do_action( 'added_term_relationship', $object_id, $tt_id );
</span><span class="cx">          $new_tt_ids[] = $tt_id;
</span><span class="cx">  }
</span><span class="lines">@@ -2293,7 +2652,19 @@
</span><span class="cx"> 
</span><span class="cx">  wp_cache_delete( $object_id, $taxonomy . '_relationships' );
</span><span class="cx"> 
</span><del>-       do_action('set_object_terms', $object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids);
</del><ins>+        /**
+        * Fires after an object's terms have been set.
+        *
+        * @since 2.8.0
+        *
+        * @param int    $object_id  Object ID.
+        * @param array  $terms      An array of object terms.
+        * @param array  $tt_ids     An array of term taxonomy IDs.
+        * @param string $taxonomy   Taxonomy slug.
+        * @param bool   $append     Whether to append new terms to the old terms.
+        * @param array  $old_tt_ids Old array of term taxonomy IDs.
+        */
+       do_action( 'set_object_terms', $object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids );
</ins><span class="cx">   return $tt_ids;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2318,9 +2689,6 @@
</span><span class="cx">  * @since 3.6.0
</span><span class="cx">  * @uses $wpdb
</span><span class="cx">  *
</span><del>- * @uses apply_filters() Calls 'delete_term_relationships' hook with object_id and tt_ids as parameters.
- * @uses apply_filters() Calls 'deleted_term_relationships' hook with object_id and tt_ids as parameters.
- *
</del><span class="cx">  * @param int $object_id The ID of the object from which the terms will be removed.
</span><span class="cx">  * @param array|int|string $terms The slug(s) or ID(s) of the term(s) to remove.
</span><span class="cx">  * @param array|string $taxonomy Taxonomy name.
</span><span class="lines">@@ -2362,8 +2730,26 @@
</span><span class="cx"> 
</span><span class="cx">  if ( $tt_ids ) {
</span><span class="cx">          $in_tt_ids = "'" . implode( "', '", $tt_ids ) . "'";
</span><ins>+
+               /**
+                * Fires immediately before an object-term relationship is deleted.
+                *
+                * @since 2.9.0
+                *
+                * @param int   $object_id Object ID.
+                * @param array $tt_ids    An array of term taxonomy IDs.
+                */
</ins><span class="cx">           do_action( 'delete_term_relationships', $object_id, $tt_ids );
</span><span class="cx">          $deleted = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id IN ($in_tt_ids)", $object_id ) );
</span><ins>+
+               /**
+                * Fires immediately after an object-term relationship is deleted.
+                *
+                * @since 2.9.0
+                *
+                * @param int   $object_id Object ID.
+                * @param array $tt_ids    An array of term taxonomy IDs.
+                */
</ins><span class="cx">           do_action( 'deleted_term_relationships', $object_id, $tt_ids );
</span><span class="cx">          wp_update_term_count( $tt_ids, $taxonomy );
</span><span class="cx"> 
</span><span class="lines">@@ -2462,9 +2848,6 @@
</span><span class="cx">  * @since 2.3.0
</span><span class="cx">  *
</span><span class="cx">  * @uses $wpdb
</span><del>- * @uses do_action() Will call both 'edit_term' and 'edit_$taxonomy' twice.
- * @uses apply_filters() Will call the 'term_id_filter' filter and pass the term
- *     id and taxonomy id.
</del><span class="cx">  *
</span><span class="cx">  * @param int $term_id The ID of the term
</span><span class="cx">  * @param string $taxonomy The context in which to relate the term to the object.
</span><span class="lines">@@ -2517,13 +2900,29 @@
</span><span class="cx">          } else {
</span><span class="cx">                  // The alias isn't in a group, so let's create a new one and firstly add the alias term to it.
</span><span class="cx">                  $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms") + 1;
</span><ins>+
+                       /** This action is documented in wp-includes/taxonomy.php */
</ins><span class="cx">                   do_action( 'edit_terms', $alias->term_id, $taxonomy );
</span><span class="cx">                  $wpdb->update( $wpdb->terms, compact('term_group'), array( 'term_id' => $alias->term_id ) );
</span><ins>+
+                       /** This action is documented in wp-includes/taxonomy.php */
</ins><span class="cx">                   do_action( 'edited_terms', $alias->term_id, $taxonomy );
</span><span class="cx">          }
</span><span class="cx">  }
</span><span class="cx"> 
</span><del>-       // Check $parent to see if it will cause a hierarchy loop
</del><ins>+        /**
+        * Filter the term parent.
+        *
+        * Hook to this filter to see if it will cause a hierarchy loop.
+        *
+        * @since 3.1.0
+        *
+        * @param int    $parent   ID of the parent term.
+        * @param int    $term_id  Term ID.
+        * @param string $taxonomy Taxonomy slug.
+        * @param array  $args     Compacted array of update arguments for the given term.
+        * @param array  $args     An array of update arguments for the given term.
+        */
</ins><span class="cx">   $parent = apply_filters( 'wp_update_term_parent', $parent, $term_id, $taxonomy, compact( array_keys( $args ) ), $args );
</span><span class="cx"> 
</span><span class="cx">  // Check for duplicate slug
</span><span class="lines">@@ -2536,35 +2935,101 @@
</span><span class="cx">          else
</span><span class="cx">                  return new WP_Error('duplicate_term_slug', sprintf(__('The slug &#8220;%s&#8221; is already in use by another term'), $slug));
</span><span class="cx">  }
</span><ins>+
+       /** This action is documented in wp-includes/taxonomy.php */
</ins><span class="cx">   do_action( 'edit_terms', $term_id, $taxonomy );
</span><span class="cx">  $wpdb->update($wpdb->terms, compact( 'name', 'slug', 'term_group' ), compact( 'term_id' ) );
</span><span class="cx">  if ( empty($slug) ) {
</span><span class="cx">          $slug = sanitize_title($name, $term_id);
</span><span class="cx">          $wpdb->update( $wpdb->terms, compact( 'slug' ), compact( 'term_id' ) );
</span><span class="cx">  }
</span><ins>+
+       /** This action is documented in wp-includes/taxonomy.php */
</ins><span class="cx">   do_action( 'edited_terms', $term_id, $taxonomy );
</span><span class="cx"> 
</span><span class="cx">  $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) );
</span><ins>+
+       /**
+        * Fires immediate before a term-taxonomy relationship is updated.
+        *
+        * @since 2.9.0
+        *
+        * @param int    $tt_id    Term taxonomy ID.
+        * @param string $taxonomy Taxonomy slug.
+        */
</ins><span class="cx">   do_action( 'edit_term_taxonomy', $tt_id, $taxonomy );
</span><span class="cx">  $wpdb->update( $wpdb->term_taxonomy, compact( 'term_id', 'taxonomy', 'description', 'parent' ), array( 'term_taxonomy_id' => $tt_id ) );
</span><ins>+
+       /**
+        * Fires immediately after a term-taxonomy relationship is updated.
+        *
+        * @since 2.9.0
+        *
+        * @param int    $tt_id    Term taxonomy ID.
+        * @param string $taxonomy Taxonomy slug.
+        */
</ins><span class="cx">   do_action( 'edited_term_taxonomy', $tt_id, $taxonomy );
</span><span class="cx"> 
</span><span class="cx">  // Clean the relationship caches for all object types using this term
</span><span class="cx">  $objects = $wpdb->get_col( $wpdb->prepare( "SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $tt_id ) );
</span><span class="cx">  $tax_object = get_taxonomy( $taxonomy );
</span><del>-       foreach ( $tax_object->object_type as $object_type )
</del><ins>+        foreach ( $tax_object->object_type as $object_type ) {
</ins><span class="cx">           clean_object_term_cache( $objects, $object_type );
</span><ins>+       }
</ins><span class="cx"> 
</span><del>-       do_action("edit_term", $term_id, $tt_id, $taxonomy);
-       do_action("edit_$taxonomy", $term_id, $tt_id);
</del><ins>+        /**
+        * Fires after a term has been updated, but before the term cache has been cleaned.
+        *
+        * @since 2.3.0
+        *
+        * @param int    $term_id  Term ID.
+        * @param int    $tt_id    Term taxonomy ID.
+        * @param string $taxonomy Taxonomy slug.
+        */
+       do_action( "edit_term", $term_id, $tt_id, $taxonomy );
</ins><span class="cx"> 
</span><del>-       $term_id = apply_filters('term_id_filter', $term_id, $tt_id);
</del><ins>+        /**
+        * Fires after a term in a specific taxonomy has been updated, but before the term
+        * cache has been cleaned.
+        *
+        * The dynamic portion of the hook name, $taxonomy, refers to the taxonomy slug.
+        *
+        * @since 2.3.0
+        *
+        * @param int $term_id Term ID.
+        * @param int $tt_id   Term taxonomy ID.
+        */
+       do_action( "edit_$taxonomy", $term_id, $tt_id );
</ins><span class="cx"> 
</span><ins>+       /** This filter is documented in wp-includes/taxonomy.php */
+       $term_id = apply_filters( 'term_id_filter', $term_id, $tt_id );
+
</ins><span class="cx">   clean_term_cache($term_id, $taxonomy);
</span><span class="cx"> 
</span><del>-       do_action("edited_term", $term_id, $tt_id, $taxonomy);
-       do_action("edited_$taxonomy", $term_id, $tt_id);
</del><ins>+        /**
+        * Fires after a term has been updated, and the term cache has been cleaned.
+        *
+        * @since 2.3.0
+        *
+        * @param int    $term_id  Term ID.
+        * @param int    $tt_id    Term taxonomy ID.
+        * @param string $taxonomy Taxonomy slug.
+        */
+       do_action( "edited_term", $term_id, $tt_id, $taxonomy );
</ins><span class="cx"> 
</span><ins>+       /**
+        * Fires after a term for a specific taxonomy has been updated, and the term
+        * cache has been cleaned.
+        *
+        * The dynamic portion of the hook name, $taxonomy, refers to the taxonomy slug.
+        *
+        * @since 2.3.0
+        *
+        * @param int $term_id Term ID.
+        * @param int $tt_id   Term taxonomy ID.
+        */
+       do_action( "edited_$taxonomy", $term_id, $tt_id );
+
</ins><span class="cx">   return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2683,8 +3148,6 @@
</span><span class="cx">  * @since 2.3.0
</span><span class="cx">  *
</span><span class="cx">  * @see get_object_taxonomies() for more on $object_type
</span><del>- * @uses do_action() Will call action hook named, 'clean_object_term_cache' after completion.
- *     Passes, function params in same order.
</del><span class="cx">  *
</span><span class="cx">  * @param int|array $object_ids Single or list of term object ID(s)
</span><span class="cx">  * @param array|string $object_type The taxonomy object type
</span><span class="lines">@@ -2701,7 +3164,15 @@
</span><span class="cx">          }
</span><span class="cx">  }
</span><span class="cx"> 
</span><del>-       do_action('clean_object_term_cache', $object_ids, $object_type);
</del><ins>+        /**
+        * Fires after the object term cache has been cleaned.
+        *
+        * @since 2.5.0
+        *
+        * @param array  $object_ids An array of object IDs.
+        * @param string $objet_type Object type.
+        */
+       do_action( 'clean_object_term_cache', $object_ids, $object_type );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><span class="lines">@@ -2751,7 +3222,15 @@
</span><span class="cx">                  _get_term_hierarchy($taxonomy);
</span><span class="cx">          }
</span><span class="cx"> 
</span><del>-               do_action('clean_term_cache', $ids, $taxonomy);
</del><ins>+                /**
+                * Fires once after each taxonomy's term cache has been cleaned.
+                *
+                * @since 2.5.0
+                *
+                * @param array  $ids      An array of term IDs.
+                * @param string $taxonomy Taxonomy slug.
+                */
+               do_action( 'clean_term_cache', $ids, $taxonomy );
</ins><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">  wp_cache_set( 'last_changed', microtime(), 'terms' );
</span><span class="lines">@@ -3052,8 +3531,11 @@
</span><span class="cx">          if ( $object_types )
</span><span class="cx">                  $count += (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type IN ('" . implode("', '", $object_types ) . "') AND term_taxonomy_id = %d", $term ) );
</span><span class="cx"> 
</span><ins>+               /** This action is documented in wp-includes/taxonomy.php */
</ins><span class="cx">           do_action( 'edit_term_taxonomy', $term, $taxonomy );
</span><span class="cx">          $wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) );
</span><ins>+
+               /** This action is documented in wp-includes/taxonomy.php */
</ins><span class="cx">           do_action( 'edited_term_taxonomy', $term, $taxonomy );
</span><span class="cx">  }
</span><span class="cx"> }
</span><span class="lines">@@ -3075,8 +3557,11 @@
</span><span class="cx">  foreach ( (array) $terms as $term ) {
</span><span class="cx">          $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term ) );
</span><span class="cx"> 
</span><ins>+               /** This action is documented in wp-includes/taxonomy.php */
</ins><span class="cx">           do_action( 'edit_term_taxonomy', $term, $taxonomy );
</span><span class="cx">          $wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) );
</span><ins>+
+               /** This action is documented in wp-includes/taxonomy.php */
</ins><span class="cx">           do_action( 'edited_term_taxonomy', $term, $taxonomy );
</span><span class="cx">  }
</span><span class="cx"> }
</span><span class="lines">@@ -3086,10 +3571,6 @@
</span><span class="cx">  *
</span><span class="cx">  * @since 2.5.0
</span><span class="cx">  *
</span><del>- * @uses apply_filters() Calls 'term_link' with term link and term object, and taxonomy parameters.
- * @uses apply_filters() For the post_tag Taxonomy, Calls 'tag_link' with tag link and tag ID as parameters.
- * @uses apply_filters() For the category Taxonomy, Calls 'category_link' filter on category link and category ID.
- *
</del><span class="cx">  * @param object|int|string $term
</span><span class="cx">  * @param string $taxonomy (optional if $term is object)
</span><span class="cx">  * @return string|WP_Error HTML link to taxonomy term archive on success, WP_Error if term does not exist.
</span><span class="lines">@@ -3143,12 +3624,42 @@
</span><span class="cx">          $termlink = home_url( user_trailingslashit($termlink, 'category') );
</span><span class="cx">  }
</span><span class="cx">  // Back Compat filters.
</span><del>-       if ( 'post_tag' == $taxonomy )
</del><ins>+        if ( 'post_tag' == $taxonomy ) {
+
+               /**
+                * Filter the tag link.
+                *
+                * @since 2.3.0
+                * @deprecated 2.5.0 Use 'term_link' instead.
+                *
+                * @param string $termlink Tag link URL.
+                * @param int    $term_id  Term ID.
+                */
</ins><span class="cx">           $termlink = apply_filters( 'tag_link', $termlink, $term->term_id );
</span><del>-       elseif ( 'category' == $taxonomy )
</del><ins>+        } elseif ( 'category' == $taxonomy ) {
+
+               /**
+                * Filter the category link.
+                *
+                * @since 1.5.0
+                * @deprecated 2.5.0 Use 'term_link' instead.
+                *
+                * @param string $termlink Category link URL.
+                * @param int    $term_id  Term ID.
+                */
</ins><span class="cx">           $termlink = apply_filters( 'category_link', $termlink, $term->term_id );
</span><ins>+       }
</ins><span class="cx"> 
</span><del>-       return apply_filters('term_link', $termlink, $term, $taxonomy);
</del><ins>+        /**
+        * Filter the term link.
+        *
+        * @since 2.5.0
+        *
+        * @param string $termlink Term link URL.
+        * @param object $term     Term object.
+        * @param string $taxonomy Taxonomy slug.
+        */
+       return apply_filters( 'term_link', $termlink, $term, $taxonomy );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><span class="lines">@@ -3334,7 +3845,9 @@
</span><span class="cx">  $ancestors = array();
</span><span class="cx"> 
</span><span class="cx">  if ( empty( $object_id ) ) {
</span><del>-               return apply_filters('get_ancestors', $ancestors, $object_id, $object_type);
</del><ins>+
+               /** This filter is documented in wp-includes/taxonomy.php */
+               return apply_filters( 'get_ancestors', $ancestors, $object_id, $object_type );
</ins><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">  if ( is_taxonomy_hierarchical( $object_type ) ) {
</span><span class="lines">@@ -3347,7 +3860,16 @@
</span><span class="cx">          $ancestors = get_post_ancestors($object_id);
</span><span class="cx">  }
</span><span class="cx"> 
</span><del>-       return apply_filters('get_ancestors', $ancestors, $object_id, $object_type);
</del><ins>+        /**
+        * Filter a given object's ancestors.
+        *
+        * @since 3.1.0
+        *
+        * @param array  $ancestors   An array of object ancestors.
+        * @param int    $object_id   Object ID.
+        * @param string $object_type Type of object.
+        */
+       return apply_filters( 'get_ancestors', $ancestors, $object_id, $object_type );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span></span></pre>
</div>
</div>

</body>
</html>