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
No comments yet... Be the first to leave a reply!