使用WordPress,我使用wp_editor來允許用戶使用編輯器和媒體上傳器。我想避免創建帖子的自動保存,但問題是附件沒有添加post_id直到帖子被保存。將媒體貼到帖子而不自動保存第一個
我想知道是否有辦法上傳媒體,然後在保存後將其附加到新帖子。
我可以將臨時ID傳遞給附件以在帖子保存時識別它嗎?或者可能在上傳後抓取附件ID?
點子讚賞!
使用WordPress,我使用wp_editor來允許用戶使用編輯器和媒體上傳器。我想避免創建帖子的自動保存,但問題是附件沒有添加post_id直到帖子被保存。將媒體貼到帖子而不自動保存第一個
我想知道是否有辦法上傳媒體,然後在保存後將其附加到新帖子。
我可以將臨時ID傳遞給附件以在帖子保存時識別它嗎?或者可能在上傳後抓取附件ID?
點子讚賞!
經過大驚小怪之後,我得出結論認爲帖子ID預先是必要的。
我最終做了WordPress Post Edit屏幕。我用一個小小的jQuery和Ajax來動態創建一個自動保存,一旦用戶輸入了一個帖子標題。
一旦自動保存完成,它會將媒體上傳iframe href替換爲包含自動保存帖子ID的媒體。
因此,仍然有可能會有一些被遺棄的郵件草稿,但至少它需要通過輸入郵件標題作出一點承諾。
您可以創建獨立的媒體,然後後來附加到一個帖子:
function file_into_database($filetype, $filename, $target)
{
$title = $this->clean_file_info[ 'basename' ];
$attachment = array
(
'post_mime_type' => $filetype
, 'post_title' => $title
, 'post_content' => ''
, 'post_status' => 'inherit'
, 'guid' => $target[ 'uri' ]
, 'post_author' => $this->author
);
$attach_id = wp_insert_attachment($attachment, $target[ 'path' ]);
$attach_data = wp_generate_attachment_metadata($attach_id, $target[ 'path' ]);
wp_update_attachment_metadata($attach_id, $attach_data);
return $attach_id;
}
然後稍後再連接:
wp_update_post
(
array
(
'ID' => $attachment[ 'id' ]
, 'post_parent' => $id_new_post
)
)
我剛剛發現這個在一個插件,沒找到它記錄,所以我不知道是否有任何副作用,但我沒有遇到任何。另外請注意,如果帖子最終沒有發佈,您將不會收到延遲的自動保存,但是您可能會留下附加的附件,因此您可能必須在將來的某個時間安排刪除操作,並取消該附件該帖子得到保存。