/** * Display list of a post's revisions. * * Can output either a UL with edit links or a TABLE with diff interface, and * restore action links. * * @since 2.6.0 * * @param int|WP_Post $post_id Optional. Post ID or WP_Post object. Default is global $post. * @param string $type 'all' (default), 'revision' or 'autosave' */ function wp_list_post_revisions($post_id = 0, $type = 'all') { if (!($post = get_post($post_id))) { return; } // $args array with (parent, format, right, left, type) deprecated since 3.6 if (is_array($type)) { $type = !empty($type['type']) ? $type['type'] : $type; _deprecated_argument(__FUNCTION__, '3.6.0'); } if (!($revisions = wp_get_post_revisions($post->ID))) { return; } $rows = ''; foreach ($revisions as $revision) { if (!current_user_can('read_post', $revision->ID)) { continue; } $is_autosave = wp_is_post_autosave($revision); if ('revision' === $type && $is_autosave || 'autosave' === $type && !$is_autosave) { continue; } $rows .= "\t<li>" . wp_post_revision_title_expanded($revision) . "</li>\n"; } echo "<div class='hide-if-js'><p>" . __('JavaScript must be enabled to use this feature.') . "</p></div>\n"; echo "<ul class='post-revisions hide-if-no-js'>\n"; echo $rows; echo "</ul>"; }
/** * Display list of a post's revisions. * * Can output either a UL with edit links or a TABLE with diff interface, and * restore action links. * * @package WordPress * @subpackage Post_Revisions * @since 2.6.0 * * @uses wp_get_post_revisions() * @uses wp_post_revision_title_expanded() * @uses get_edit_post_link() * @uses get_the_author_meta() * * @param int|object $post_id Post ID or post object. * @param string $type 'all' (default), 'revision' or 'autosave' * @return null */ function wp_list_post_revisions($post_id = 0, $type = 'all') { if (!($post = get_post($post_id))) { return; } // $args array with (parent, format, right, left, type) deprecated since 3.6 if (is_array($type)) { $type = !empty($type['type']) ? $type['type'] : $type; _deprecated_argument(__FUNCTION__, '3.6'); } if (!($revisions = wp_get_post_revisions($post->ID))) { return; } $rows = ''; foreach ($revisions as $revision) { if (!current_user_can('read_post', $revision->ID)) { continue; } $is_autosave = wp_is_post_autosave($revision); if ('revision' === $type && $is_autosave || 'autosave' === $type && !$is_autosave) { continue; } $rows .= "\t<li>" . wp_post_revision_title_expanded($revision) . "</li>\n"; } echo "<ul class='post-revisions'>\n"; echo $rows; // if the post was previously restored from a revision // show the restore event details if ($restored_from_meta = get_post_meta($post->ID, '_post_restored_from', true)) { $author = get_user_by('id', $restored_from_meta['restored_by_user']); /* translators: revision date format, see http://php.net/date */ $datef = _x('j F, Y @ G:i:s', 'revision date format'); $date = date_i18n($datef, strtotime($restored_from_meta['restored_time'])); $time_diff = human_time_diff($restored_from_meta['restored_time']); ?> <hr /> <div id="revisions-meta-restored"> <?php printf(__('Previously restored by %1$s %2$s, %3$s ago (%4$s)'), get_avatar($author->ID, 24), $author->display_name, $time_diff, $date); ?> </div> <?php echo "</ul>"; } }