2012-07-20 78 views
0

使用WordPress,我使用wp_editor來允許用戶使用編輯器和媒體上傳器。我想避免創建帖子的自動保存,但問題是附件沒有添加post_id直到帖子被保存。將媒體貼到帖子而不自動保存第一個

我想知道是否有辦法上傳媒體,然後在保存後將其附加到新帖子。

我可以將臨時ID傳遞給附件以在帖子保存時識別它嗎?或者可能在上傳後抓取附件ID?

點子讚賞!

回答

0

經過大驚小怪之後,我得出結論認爲帖子ID預先是必要的。

我最終做了WordPress Post Edit屏幕。我用一個小小的jQuery和Ajax來動態創建一個自動保存,一旦用戶輸入了一個帖子標題。

一旦自動保存完成,它會將媒體上傳iframe href替換爲包含自動保存帖子ID的媒體。

因此,仍然有可能會有一些被遺棄的郵件草稿,但至少它需要通過輸入郵件標題作出一點承諾。

0

您可以創建獨立的媒體,然後後來附加到一個帖子:

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 
    ) 
) 

我剛剛發現這個在一個插件,沒找到它記錄,所以我不知道是否有任何副作用,但我沒有遇到任何。另外請注意,如果帖子最終沒有發佈,您將不會收到延遲的自動保存,但是您可能會留下附加的附件,因此您可能必須在將來的某個時間安排刪除操作,並取消該附件該帖子得到保存。

相關問題