将帖子还原到指定的修订版。

原型

wp_restore_post_revision( int|WP_Post $revision_id, array $fields = null )

描述

可以使用修订后的所有字段或仅选定的字段恢复过去的修订。

参数

$revision_id (int|WP_Post) (Required) 修订版ID或修订对象。

$fields (array) (Optional)  要从哪些字段恢复。默认为全部。

返回值

(int|false|null)  如果错误则为空,如果没有要恢复的字段则为false,(int)如果成功则发布ID。

源文件

路径:wp-includes/revision.php

<?php
...
function wp_restore_post_revision( $revision_id, $fields = null ) {
	if ( !$revision = wp_get_post_revision( $revision_id, ARRAY_A ) )
		return $revision;
	if ( !is_array( $fields ) )
		$fields = array_keys( _wp_post_revision_fields( $revision ) );
	$update = array();
	foreach ( array_intersect( array_keys( $revision ), $fields ) as $field ) {
		$update[$field] = $revision[$field];
	}
	if ( !$update )
		return false;
	$update['ID'] = $revision['post_parent'];
	$update = wp_slash( $update ); //since data is from db
	$post_id = wp_update_post( $update );
	if ( ! $post_id || is_wp_error( $post_id ) )
		return $post_id;
	// Update last edit user
	update_post_meta( $post_id, '_edit_last', get_current_user_id() );
	/**
	 * Fires after a post revision has been restored.
	 *
	 * @since 2.6.0
	 *
	 * @param int $post_id     Post ID.
	 * @param int $revision_id Post revision ID.
	 */
	do_action( 'wp_restore_post_revision', $post_id, $revision['ID'] );
	return $post_id;
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_restore_post_revision/