Advertisements

wp_list_post_revisions

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

Advertisements

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: