函数文档

_wp_post_revision_data()

💡 云策文档标注

概述

_wp_post_revision_data() 函数用于生成一个准备插入 posts 表作为文章修订版的数组。它处理输入的文章数据,设置修订版特定字段,并返回适用于数据库插入的数组。

关键要点

  • 函数接受一个可选的 $post 参数(数组或 WP_Post 对象)和一个可选的 $autosave 布尔参数,默认值分别为空数组和 false。
  • 通过 _wp_post_revision_fields() 确定需要保存的字段,并基于输入数据生成修订版数组。
  • 自动设置修订版的 post_parent、post_status、post_type、post_name 等关键字段,post_name 根据是否为自动保存而不同。
  • 返回的数组可直接用于插入 posts 表,支持文章修订功能的核心操作。

代码示例

function _wp_post_revision_data( $post = array(), $autosave = false ) {
    if ( ! is_array( $post ) ) {
        $post = get_post( $post, ARRAY_A );
    }

    $fields = _wp_post_revision_fields( $post );

    $revision_data = array();

    foreach ( array_intersect( array_keys( $post ), array_keys( $fields ) ) as $field ) {
        $revision_data[ $field ] = $post[ $field ];
    }

    $revision_data['post_parent']   = $post['ID'];
    $revision_data['post_status']   = 'inherit';
    $revision_data['post_type']     = 'revision';
    $revision_data['post_name']     = $autosave ? "$post[ID]-autosave-v1" : "$post[ID]-revision-v1";
    $revision_data['post_date']     = isset( $post['post_modified'] ) ? $post['post_modified'] : '';
    $revision_data['post_date_gmt'] = isset( $post['post_modified_gmt'] ) ? $post['post_modified_gmt'] : '';

    return $revision_data;
}

📄 原文内容

Returns a post array ready to be inserted into the posts table as a post revision.

Parameters

$postarray|WP_Postoptional
A post array or a WP_Post object to be processed for insertion as a post revision.

Default:array()

$autosavebooloptional
Is the revision an autosave?

Default:false

Return

array Post array ready to be inserted as a post revision.

Source

function _wp_post_revision_data( $post = array(), $autosave = false ) {
	if ( ! is_array( $post ) ) {
		$post = get_post( $post, ARRAY_A );
	}

	$fields = _wp_post_revision_fields( $post );

	$revision_data = array();

	foreach ( array_intersect( array_keys( $post ), array_keys( $fields ) ) as $field ) {
		$revision_data[ $field ] = $post[ $field ];
	}

	$revision_data['post_parent']   = $post['ID'];
	$revision_data['post_status']   = 'inherit';
	$revision_data['post_type']     = 'revision';
	$revision_data['post_name']     = $autosave ? "$post[ID]-autosave-v1" : "$post[ID]-revision-v1"; // "1" is the revisioning system version.
	$revision_data['post_date']     = isset( $post['post_modified'] ) ? $post['post_modified'] : '';
	$revision_data['post_date_gmt'] = isset( $post['post_modified_gmt'] ) ? $post['post_modified_gmt'] : '';

	return $revision_data;
}

Changelog

Version Description
4.5.0 Introduced.