描述
_wp_put_post_revision
() 是一个WordPress内部函数,用于将文章数据插入到 posts
表中作为文章修订版本。这个函数不是为了插件或主题开发者设计的,而是主要用于核心功能之间的交互。它的存在是为了确保文章的修订版本能够正确地保存到数据库中。
参数
- $post (int|WP_Post|array|null) (可选) – 文章ID、文章对象或文章数组。
- 默认值:
null
- $autosave (bool) (可选) – 修订版本是否为自动保存。
- 默认值:
false
返回值
- (int|WP_Error) 如果发生错误,返回
WP_Error
对象或0
;如果成功,返回新修订版本的ID。
源代码位置
- 文件:
wp-includes/revision.php
函数讲解
function _wp_put_post_revision( $post = null, $autosave = false ) {
// 如果 $post 是对象,转换为数组
if ( is_object($post) )
$post = get_object_vars( $post );
// 如果 $post 不是数组,尝试获取文章数据
elseif ( !is_array($post) )
$post = get_post($post, ARRAY_A);
// 检查文章数据是否有效
if ( ! $post || empty($post['ID']) )
return new WP_Error( 'invalid_post', __( 'Invalid post ID.' ) );
// 检查是否尝试创建修订版本的修订版本
if ( isset($post['post_type']) && 'revision' == $post['post_type'] )
return new WP_Error( 'post_type', __( 'Cannot create a revision of a revision' ) );
// 准备修订版本数据
$post = _wp_post_revision_data( $post, $autosave );
$post = wp_slash($post); // 由于数据来自数据库,需要进行转义
// 插入修订版本
$revision_id = wp_insert_post( $post );
if ( is_wp_error($revision_id) )
return $revision_id;
// 如果修订版本插入成功,触发动作
if ( $revision_id ) {
do_action( '_wp_put_post_revision', $revision_id );
}
return $revision_id;
}
注意事项
- 由于这是一个私有函数,通常情况下你不应该在自己的插件或主题中直接调用它。如果你需要管理文章修订版本,请使用
wp_save_post_revision
函数,并遵循其官方文档中的指导。 - 如果你在开发过程中遇到了需要保存文章修订版本的类似需求,可以参考此函数的实现方式来编写自己的逻辑。
术语解释
- 修订版本:文章的历史版本,用于记录文章的修改历史。
- 自动保存:WordPress 自动保存的文章草稿,通常每分钟自动保存一次。
- 动作:WordPress 中的动作(action)是一种钩子(hook),允许在特定事件发生时执行某些操作。
未经允许不得转载:445IT之家 » WordPress函数_wp_put_post_revision()用法