在没有编辑的情况下将媒体附加到自定义帖子

时间:2010-11-13 作者:Alex

我正在创建一个自定义帖子类型“gallery”,管理员应该能够在其中上载图像(这些图像将附加到帖子)。

问题是,对于这种帖子类型,“编辑器”元框被禁用。我需要一种方法来添加图像上传弹出框,就像帖子一样。我该怎么做?

或者最好创建自己的上传程序?如果是这样,我如何将上传的图像附加到正在创建的帖子(图库)?

附件是如何工作的?它们也是自定义的帖子类型吗?

2 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

At the top of 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(), 但我相信你仍然需要自己处理上传。

SO网友:Makarand Mane

上述答案非常有用,但遗憾的是,wp 3.5不推荐使用\\u media\\u button()函数

所以我改变了上面的代码如下:

替换此行代码echo _media_button(__(\'Add an Image\'), \'images/media-button-image.gif?ver=20100531\', \'image\');

使用以下行:

$img = \'<span class="wp-media-buttons-icon"></span> \';
       echo \'<a href="#" class="button insert-media add_media" data-editor="\' . esc_attr( $editor_id ) . \'" title="\' . esc_attr__( \'Add Media\' ) . \'">\' . $img . __( \'Add Media\' ) . \'</a>\';
最后,我使用代码将媒体按钮添加到我的图库帖子类型如下

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

add_action(\'edit_form_advanced\', \'gallery_edit_form_advanced\');
function gallery_edit_form_advanced()
{
    if ($GLOBALS[\'post_type\'] == \'gallery\') {
        $img = \'<span class="wp-media-buttons-icon"></span> \';
       echo \'<a href="#" class="button insert-media add_media" data-editor="\' . esc_attr( $editor_id ) . \'" title="\' . esc_attr__( \'Add Media\' ) . \'">\' . $img . __( \'Add Media\' ) . \'</a>\';
    }
}

结束

相关推荐