描述
_wp_put_post_revision
() 是一個(gè)WordPress內(nèi)部函數(shù),用于將文章數(shù)據(jù)插入到 posts
表中作為文章修訂版本。這個(gè)函數(shù)不是為了插件或主題開發(fā)者設(shè)計(jì)的,而是主要用于核心功能之間的交互。它的存在是為了確保文章的修訂版本能夠正確地保存到數(shù)據(jù)庫(kù)中。
參數(shù)
- $post (int|WP_Post|array|null) (可選) – 文章ID、文章對(duì)象或文章數(shù)組。
- 默認(rèn)值:
null
- $autosave (bool) (可選) – 修訂版本是否為自動(dòng)保存。
- 默認(rèn)值:
false
返回值
- (int|WP_Error) 如果發(fā)生錯(cuò)誤,返回
WP_Error
對(duì)象或0
;如果成功,返回新修訂版本的ID。
源代碼位置
- 文件:
wp-includes/revision.php
函數(shù)講解
function _wp_put_post_revision( $post = null, $autosave = false ) {
// 如果 $post 是對(duì)象,轉(zhuǎn)換為數(shù)組
if ( is_object($post) )
$post = get_object_vars( $post );
// 如果 $post 不是數(shù)組,嘗試獲取文章數(shù)據(jù)
elseif ( !is_array($post) )
$post = get_post($post, ARRAY_A);
// 檢查文章數(shù)據(jù)是否有效
if ( ! $post || empty($post['ID']) )
return new WP_Error( 'invalid_post', __( 'Invalid post ID.' ) );
// 檢查是否嘗試創(chuàng)建修訂版本的修訂版本
if ( isset($post['post_type']) && 'revision' == $post['post_type'] )
return new WP_Error( 'post_type', __( 'Cannot create a revision of a revision' ) );
// 準(zhǔn)備修訂版本數(shù)據(jù)
$post = _wp_post_revision_data( $post, $autosave );
$post = wp_slash($post); // 由于數(shù)據(jù)來自數(shù)據(jù)庫(kù),需要進(jìn)行轉(zhuǎn)義
// 插入修訂版本
$revision_id = wp_insert_post( $post );
if ( is_wp_error($revision_id) )
return $revision_id;
// 如果修訂版本插入成功,觸發(fā)動(dòng)作
if ( $revision_id ) {
do_action( '_wp_put_post_revision', $revision_id );
}
return $revision_id;
}
注意事項(xiàng)
- 由于這是一個(gè)私有函數(shù),通常情況下你不應(yīng)該在自己的插件或主題中直接調(diào)用它。如果你需要管理文章修訂版本,請(qǐng)使用
wp_save_post_revision
函數(shù),并遵循其官方文檔中的指導(dǎo)。 - 如果你在開發(fā)過程中遇到了需要保存文章修訂版本的類似需求,可以參考此函數(shù)的實(shí)現(xiàn)方式來編寫自己的邏輯。
術(shù)語解釋
- 修訂版本:文章的歷史版本,用于記錄文章的修改歷史。
- 自動(dòng)保存:WordPress 自動(dòng)保存的文章草稿,通常每分鐘自動(dòng)保存一次。
- 動(dòng)作:WordPress 中的動(dòng)作(action)是一種鉤子(hook),允許在特定事件發(fā)生時(shí)執(zhí)行某些操作。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » WordPress函數(shù)_wp_put_post_revision()用法