diff --git a/wp-includes/revision.php b/wp-includes/revision.php index 70051a07da..941002ffc6 100644 --- a/wp-includes/revision.php +++ b/wp-includes/revision.php @@ -516,6 +516,40 @@ function wp_get_post_revisions( $post_id = 0, $args = null ) { return $revisions; } +/** + * 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. * diff --git a/wp-includes/version.php b/wp-includes/version.php index c8311a2f1e..0646e017e6 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '5.9-alpha-52094'; +$wp_version = '5.9-alpha-52095'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.