wpseek.com
A WordPress-centric search engine for devs and theme authors
_update_term_count_on_transition_post_status is private and should not be used in themes or plugins directly.
_update_term_count_on_transition_post_status › WordPress Function
Since3.3.0
Deprecatedn/a
› _update_term_count_on_transition_post_status ( $new_status, $old_status, $post )
Access: |
|
Parameters: (3) |
|
Defined at: |
|
Codex: |
Updates the custom taxonomies' term counts when a post's status is changed.
For example, default posts term counts (for custom taxonomies) don't include private / draft posts.Source
function _update_term_count_on_transition_post_status( $new_status, $old_status, $post ) { if ( $new_status === $old_status ) { return; } // Update counts for the post's terms. foreach ( (array) get_object_taxonomies( $post->post_type, 'objects' ) as $taxonomy ) { /** This filter is documented in wp-includes/taxonomy.php */ $counted_statuses = apply_filters( 'update_post_term_count_statuses', array( 'publish' ), $taxonomy ); /* * Do not recalculate term count if both the old and new status are not included in term counts. * This accounts for a transition such as draft -> pending. */ if ( ! in_array( $old_status, $counted_statuses, true ) && ! in_array( $new_status, $counted_statuses, true ) ) { continue; } /* * Do not recalculate term count if both the old and new status are included in term counts. * * This accounts for transitioning between statuses which are both included in term counts. This can only occur * if the `update_post_term_count_statuses` filter is in use to count more than just the 'publish' status. */ if ( in_array( $old_status, $counted_statuses, true ) && in_array( $new_status, $counted_statuses, true ) ) { continue; } $tt_ids = wp_get_object_terms( $post->ID, $taxonomy->name, array( 'fields' => 'tt_ids' ) ); wp_update_term_count( $tt_ids, $taxonomy->name ); } }