diff options
author | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2006-12-11 11:45:03 +0000 |
---|---|---|
committer | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2006-12-11 11:45:03 +0000 |
commit | 040b8591582940de99442bb1de04afdf9d3daf59 (patch) | |
tree | ceaa054562fa6089c307b48fc30e963eee357e73 /wp-includes/post.php | |
parent | 91725f574d4fa83b30d8d7c2794e9f078628e6da (diff) | |
download | wordpress-mu-040b8591582940de99442bb1de04afdf9d3daf59.tar.gz wordpress-mu-040b8591582940de99442bb1de04afdf9d3daf59.tar.xz wordpress-mu-040b8591582940de99442bb1de04afdf9d3daf59.zip |
WP Merge to rev 4640
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@823 7be80a69-a1ef-0310-a953-fb0f7c49ff36
Diffstat (limited to 'wp-includes/post.php')
-rw-r--r-- | wp-includes/post.php | 47 |
1 files changed, 30 insertions, 17 deletions
diff --git a/wp-includes/post.php b/wp-includes/post.php index 4d5dfd4..d0fd6df 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -438,8 +438,7 @@ function wp_delete_post($postid = 0) { $wpdb->query("DELETE FROM $wpdb->postmeta WHERE post_id = $postid"); if ( 'page' == $post->post_type ) { - wp_cache_delete( 'all_page_ids', 'pages' ); - wp_cache_delete( 'get_pages', 'page' ); + clean_page_cache($postid); $wp_rewrite->flush_rules(); } @@ -652,7 +651,7 @@ function wp_insert_post($postarr = array()) { if ( 'page' == $post_type ) { clean_page_cache($post_ID); - wp_cache_delete($post_ID, 'pages'); + $wp_rewrite->flush_rules(); } else { clean_post_cache($post_ID); } @@ -691,10 +690,6 @@ function wp_insert_post($postarr = array()) { wp_schedule_single_event(time(), 'do_pings'); } } else if ($post_type == 'page') { - wp_cache_delete( 'all_page_ids', 'pages' ); - wp_cache_delete( 'get_pages', 'page' ); - $wp_rewrite->flush_rules(); - if ( !empty($page_template) ) if ( ! update_post_meta($post_ID, '_wp_page_template', $page_template)) add_post_meta($post_ID, '_wp_page_template', $page_template, true); @@ -818,13 +813,9 @@ function wp_set_post_categories($post_ID = 0, $post_categories = array()) { foreach ( $all_affected_cats as $cat_id ) { $count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->post2cat, $wpdb->posts WHERE $wpdb->posts.ID=$wpdb->post2cat.post_id AND post_status = 'publish' AND post_type = 'post' AND category_id = '$cat_id'"); $wpdb->query("UPDATE $wpdb->categories SET category_count = '$count' WHERE cat_ID = '$cat_id'"); - wp_cache_delete($cat_id, 'category'); + clean_category_cache($cat_id); do_action('edit_category', $cat_id); } - - wp_cache_delete('get_categories', 'category'); - - do_action('edit_post', $post_ID); } // wp_set_post_categories() // @@ -1164,11 +1155,6 @@ function &get_pages($args = '') { return $pages; } -function delete_get_pages_cache() { - wp_cache_delete( 'get_pages', 'page' ); -} -add_action( 'save_post', 'delete_get_pages_cache' ); - function generate_page_uri_index() { global $wpdb; @@ -1439,4 +1425,31 @@ function wp_update_attachment_metadata( $post_id, $data ) { return add_post_meta( $post_id, '_wp_attachment_metadata', $data ); } +function wp_check_for_changed_slugs($post_id) { + if ( !strlen($_POST['wp-old-slug']) ) + return $post_id; + + $post = &get_post($post_id); + + // we're only concerned with published posts + if ( $post->post_status != 'publish' || $post->post_type != 'post' ) + return $post_id; + + // only bother if the slug has changed + if ( $post->post_name == $_POST['wp-old-slug'] ) + return $post_id; + + $old_slugs = (array) get_post_meta($post_id, '_wp_old_slug'); + + // if we haven't added this old slug before, add it now + if ( !count($old_slugs) || !in_array($_POST['wp-old-slug'], $old_slugs) ) + add_post_meta($post_id, '_wp_old_slug', $_POST['wp-old-slug']); + + // if the new slug was used previously, delete it from the list + if ( in_array($post->post_name, $old_slugs) ) + delete_post_meta($post_id, '_wp_old_slug', $post->post_name); + + return $post_id; +} + ?> |