diff -r be944660c56a -r 3d72ae0968f4 wp/wp-includes/revision.php --- a/wp/wp-includes/revision.php Wed Sep 21 18:19:35 2022 +0200 +++ b/wp/wp-includes/revision.php Tue Sep 27 16:37:53 2022 +0200 @@ -447,7 +447,7 @@ * @since 2.6.0 * * @param int|WP_Post $revision_id Revision ID or revision object. - * @return array|false|WP_Post|WP_Error|null Null or WP_Error if error, deleted post if success. + * @return WP_Post|false|null Null or false if error, deleted post object if success. */ function wp_delete_post_revision( $revision_id ) { $revision = wp_get_post_revision( $revision_id ); @@ -517,6 +517,40 @@ } /** + * Returns the url for viewing and potentially restoring revisions of a given post. + * + * @since 5.9.0 + * + * @param int|WP_Post $post_id Optional. Post ID or WP_Post object. Default is global `$post`. + * @return null|string The URL for editing revisions on the given post, otherwise null. + */ +function wp_get_post_revisions_url( $post_id = 0 ) { + $post = get_post( $post_id ); + + if ( ! $post instanceof WP_Post ) { + return null; + } + + // If the post is a revision, return early. + if ( 'revision' === $post->post_type ) { + return get_edit_post_link( $post ); + } + + if ( ! wp_revisions_enabled( $post ) ) { + return null; + } + + $revisions = wp_get_post_revisions( $post->ID, array( 'posts_per_page' => 1 ) ); + + if ( 0 === count( $revisions ) ) { + return null; + } + + $revision = reset( $revisions ); + return get_edit_post_link( $revision ); +} + +/** * Determine if revisions are enabled for a given post. * * @since 3.6.0 @@ -574,6 +608,11 @@ * The dynamic portion of the hook name, `$post->post_type`, refers to * the post type slug. * + * Possible hook names include: + * + * - `wp_post_revisions_to_keep` + * - `wp_page_revisions_to_keep` + * * @since 5.8.0 * * @param int $num Number of revisions to store. @@ -599,15 +638,14 @@ } $preview = wp_get_post_autosave( $post->ID ); - if ( ! is_object( $preview ) ) { - return $post; - } + + if ( is_object( $preview ) ) { + $preview = sanitize_post( $preview ); - $preview = sanitize_post( $preview ); - - $post->post_content = $preview->post_content; - $post->post_title = $preview->post_title; - $post->post_excerpt = $preview->post_excerpt; + $post->post_content = $preview->post_content; + $post->post_title = $preview->post_title; + $post->post_excerpt = $preview->post_excerpt; + } add_filter( 'get_the_terms', '_wp_preview_terms_filter', 10, 3 ); add_filter( 'get_post_metadata', '_wp_preview_post_thumbnail_filter', 10, 3 );