Definition:
function wp_list_post_revisions( $post_id = 0, $args = null ) {}
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.
Parameters
- int|object $post_id: Post ID or post object.
- string|array $args: See description wp_parse_args().
Source code
function wp_list_post_revisions( $post_id = 0, $args = null ) {
if ( !$post = get_post( $post_id ) )
return;
$defaults = array( 'parent' => false, 'right' => false, 'left' => false, 'format' => 'list', 'type' => 'all' );
extract( wp_parse_args( $args, $defaults ), EXTR_SKIP );
switch ( $type ) {
case 'autosave' :
if ( !$autosave = wp_get_post_autosave( $post->ID ) )
return;
$revisions = array( $autosave );
break;
case 'revision' : // just revisions - remove autosave later
case 'all' :
default :
if ( !$revisions = wp_get_post_revisions( $post->ID ) )
return;
break;
}
/* translators: post revision: 1: when, 2: author name */
$titlef = _x( '%1$s by %2$s', 'post revision' );
if ( $parent )
array_unshift( $revisions, $post );
$rows = $right_checked = '';
$class = false;
$can_edit_post = current_user_can( 'edit_post', $post->ID );
foreach ( $revisions as $revision ) {
if ( !current_user_can( 'read_post', $revision->ID ) )
continue;
if ( 'revision' === $type && wp_is_post_autosave( $revision ) )
continue;
$date = wp_post_revision_title( $revision );
$name = get_the_author_meta( 'display_name', $revision->post_author );
if ( 'form-table' == $format ) {
if ( $left )
$left_checked = $left == $revision->ID ? ' checked="checked"' : '';
else
$left_checked = $right_checked ? ' checked="checked"' : ''; // [sic] (the next one)
$right_checked = $right == $revision->ID ? ' checked="checked"' : '';
$class = $class ? '' : " class='alternate'";
if ( $post->ID != $revision->ID && $can_edit_post )
$actions = '<a href="' . wp_nonce_url( add_query_arg( array( 'revision' => $revision->ID, 'action' => 'restore' ) ), "restore-post_$post->ID|$revision->ID" ) . '">' . __( 'Restore' ) . '</a>';
else
$actions = '';
$rows .= "<tr$class>\n";
$rows .= "\t<th style='white-space: nowrap' scope='row'><input type='radio' name='left' value='$revision->ID'$left_checked /></th>\n";
$rows .= "\t<th style='white-space: nowrap' scope='row'><input type='radio' name='right' value='$revision->ID'$right_checked /></th>\n";
$rows .= "\t<td>$date</td>\n";
$rows .= "\t<td>$name</td>\n";
$rows .= "\t<td class='action-links'>$actions</td>\n";
$rows .= "</tr>\n";
} else {
$title = sprintf( $titlef, $date, $name );
$rows .= "\t<li>$title</li>\n";
}
}
if ( 'form-table' == $format ) : ?>
<form action="revision.php" method="get">
<div class="tablenav">
<div class="alignleft">
<input type="submit" class="button-secondary" value="<?php esc_attr_e( 'Compare Revisions' ); ?>" />
<input type="hidden" name="action" value="diff" />
<input type="hidden" name="post_type" value="<?php echo esc_attr($post->post_type); ?>" />
</div>
</div>
<br class="clear" />
<table class="widefat post-revisions" cellspacing="0" id="post-revisions">
<col />
<col />
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
<thead>
<tr>
<th scope="col"><?php /* translators: column name in revisons */ _ex( 'Old', 'revisions column name' ); ?></th>
<th scope="col"><?php /* translators: column name in revisons */ _ex( 'New', 'revisions column name' ); ?></th>
<th scope="col"><?php /* translators: column name in revisons */ _ex( 'Date Created', 'revisions column name' ); ?></th>
<th scope="col"><?php _e( 'Author' ); ?></th>
<th scope="col" class="action-links"><?php _e( 'Actions' ); ?></th>
</tr>
</thead>
<tbody>
<?php echo $rows; ?>
</tbody>
</table>
</form>
<?php
else :
echo "<ul class='post-revisions'>\n";
echo $rows;
echo "</ul>";
endif;
}
3863

February 12, 2011 


No comments yet... Be the first to leave a reply!