Ticket #17548: 17548.7.diff
File 17548.7.diff, 4.5 KB (added by , 13 years ago) |
---|
-
wp-includes/default-filters.php
254 254 add_action( 'publish_post', '_publish_post_hook', 5, 1 ); 255 255 add_action( 'save_post', '_save_post_hook', 5, 2 ); 256 256 add_action( 'transition_post_status', '_transition_post_status', 5, 3 ); 257 add_action( 'transition_post_status', '_update_term_count_on_transition_post_status', 10, 3 ); 257 258 add_action( 'comment_form', 'wp_comment_form_unfiltered_html_nonce' ); 258 259 add_action( 'wp_scheduled_delete', 'wp_scheduled_delete' ); 259 260 add_action( 'admin_init', 'send_frame_options_header', 10, 0 ); -
wp-includes/taxonomy.php
2447 2447 call_user_func($taxonomy->update_count_callback, $terms, $taxonomy); 2448 2448 } else { 2449 2449 // Default count updater 2450 foreach ( (array) $terms as $term) { 2451 $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term) ); 2452 do_action( 'edit_term_taxonomy', $term, $taxonomy ); 2453 $wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) ); 2454 do_action( 'edited_term_taxonomy', $term, $taxonomy ); 2455 } 2456 2450 _update_post_term_count( $terms, $taxonomy ); 2457 2451 } 2458 2452 2459 2453 clean_term_cache($terms, '', false); … … 2849 2843 $object_types = esc_sql($object_types); 2850 2844 2851 2845 foreach ( (array) $terms as $term ) { 2852 $count = $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 ) ); 2846 2847 // Attachments can be 'inherit' status, we need to base count off the parent's staus if so 2848 if ( in_array( 'attachment', $object_types ) ) 2849 $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts p1 WHERE p1.ID = $wpdb->term_relationships.object_id AND ( post_status = 'publish' OR ( post_status = 'inherit' AND post_parent > 0 AND ( SELECT post_status FROM $wpdb->posts WHERE ID = p1.post_parent ) = 'publish' ) ) AND post_type IN ('" . implode("', '", $object_types) . "') AND term_taxonomy_id = %d", $term ) ); 2850 else 2851 $count = $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 ) ); 2852 2853 2853 do_action( 'edit_term_taxonomy', $term, $taxonomy ); 2854 2854 $wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) ); 2855 2855 do_action( 'edited_term_taxonomy', $term, $taxonomy ); -
wp-includes/post.php
2731 2731 $post->post_status = 'publish'; 2732 2732 wp_transition_post_status('publish', $old_status, $post); 2733 2733 2734 // Update counts for the post's terms.2735 foreach ( (array) get_object_taxonomies('post') as $taxonomy ) {2736 $tt_ids = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'tt_ids'));2737 wp_update_term_count($tt_ids, $taxonomy);2738 }2739 2740 2734 do_action('edit_post', $post_id, $post); 2741 2735 do_action('save_post', $post_id, $post); 2742 2736 do_action('wp_insert_post', $post_id, $post); … … 5312 5306 } 5313 5307 add_filter( 'wp_get_object_terms', '_post_format_wp_get_object_terms' ); 5314 5308 5309 /** 5310 * Update 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. 5311 * 5312 * @access private 5313 * @param string $new_status 5314 * @param string $old_status 5315 * @param object $post 5316 * @since 3.3.0 5317 */ 5318 function _update_term_count_on_transition_post_status( $new_status, $old_status, $post ) { 5319 // Update counts for the post's terms. 5320 foreach ( (array) get_object_taxonomies( $post->post_type ) as $taxonomy ) { 5321 $tt_ids = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'tt_ids' ) ); 5322 wp_update_term_count( $tt_ids, $taxonomy ); 5323 } 5324 } 5315 5325 ?>