X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/6c8f14c09105d0afa4c1574215c59b5021040e76..baca9ce86a38dc54c4574890ee2d352fd81f78b2:/wp-includes/post.php?ds=sidebyside diff --git a/wp-includes/post.php b/wp-includes/post.php index 54f17f41..870bec7a 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -681,12 +681,9 @@ final class WP_Post { * @return array Ancestor IDs or empty array if none are found. */ function get_post_ancestors( $post ) { - if ( ! $post ) - return false; - $post = get_post( $post ); - if ( empty( $post->post_parent ) || $post->post_parent == $post->ID ) + if ( ! $post || empty( $post->post_parent ) || $post->post_parent == $post->ID ) return array(); $ancestors = array(); @@ -3010,18 +3007,31 @@ function wp_update_post( $postarr = array(), $wp_error = false ) { * Publish a post by transitioning the post status. * * @since 2.1.0 - * @uses wp_update_post() + * @uses $wpdb + * @uses do_action() Calls 'edit_post', 'save_post', and 'wp_insert_post' on post_id and post data. * * @param mixed $post Post ID or object. */ function wp_publish_post( $post ) { + global $wpdb; + if ( ! $post = get_post( $post ) ) return; + if ( 'publish' == $post->post_status ) return; + $wpdb->update( $wpdb->posts, array( 'post_status' => 'publish' ), array( 'ID' => $post->ID ) ); + + clean_post_cache( $post->ID ); + + $old_status = $post->post_status; $post->post_status = 'publish'; - wp_update_post( $post ); + wp_transition_post_status( 'publish', $old_status, $post ); + + do_action( 'edit_post', $post->ID, $post ); + do_action( 'save_post', $post->ID, $post ); + do_action( 'wp_insert_post', $post->ID, $post ); } /** @@ -3581,8 +3591,8 @@ function _page_traverse_name( $page_id, &$children, &$result ){ * @return string Page URI. */ function get_page_uri($page) { - if ( ! is_object($page) ) - $page = get_post( $page ); + $page = get_post( $page ); + $uri = $page->post_name; foreach ( $page->ancestors as $parent ) {