问题描述

我正在创建一个自定义帖子类型,”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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。