_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
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. |