問題描述

我正在建立一個自定義帖子型別,”gallery”,其中管理員應該能夠上傳影像 (這些影像將附加到帖子) 。

事情是這個帖子型別的”editor” 元框被停用。而且我需要一種方法來新增影像上傳 pop-up 框,就像帖子一樣。我怎樣才能做到這一點?

或者最好建立自己的上傳器?如果是,如何將上傳的影像附加到正在建立的帖子 (相簿)?

附件如何工作?他們是自定義帖子型別嗎?

最佳解決方法

wp-admin/edit-form-advanced.php 的頂部,我看到以下與媒體上傳器有關的程式碼:

if ( post_type_supports($post_type, 'editor') || post_type_supports($post_type, 'thumbnail') ) {
    add_thickbox();
    wp_enqueue_script('media-upload');
}

您需要自己新增。 add_thickbox()排列指令碼和樣式,因此請確保您掛接到 print_styles,因為 print_scripts 將為時已晚,無法列印樣式。

add_action('admin_print_styles-post-new.php', 'wpa4016_add_media_upload_scripts');
add_action('admin_print_styles-post.php', 'wpa4016_add_media_upload_scripts');
function wpa4016_add_media_upload_scripts()
{
    if ($GLOBALS['post_type'] == 'wpa4016') {
        add_thickbox();
        wp_enqueue_script('media-upload');
    }
}

現在我們需要新增上傳按鈕。我看到 the_editor(),顯示編輯器的功能有引數 $media_buttons,如果我們設定為 true,它基本上執行 do_action('media_buttons')。這反過來又稱為 media_buttons(),它為每種媒體型別 (影像,影片,音訊…) 呼叫_media_button()。所以我們這樣做!

add_action('edit_form_advanced', 'wpa4016_edit_form_advanced');
function wpa4016_edit_form_advanced()
{
    if ($GLOBALS['post_type'] == 'wpa4016') {
        echo _media_button(__('Add an Image'), 'images/media-button-image.gif?ver=20100531', 'image');
    }
}

附件確實是 attachment 型別的自定義帖子,其 post_parent 設定為他們附加的帖子。影像有兩個元欄位:_wp_attached_file 包含檔名,_wp_attachment_metadata 包含具有影像 EXIF 資料的陣列和指向相同影像的不同大小的指標。您可以使用 wp_insert_attachment()自己建立,但我相信您還需要自己處理上傳。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。