WordPress媒体管理器-限制为特定的MIME类型

时间:2013-05-23 作者:cyberwani

我正在开发一个CPT,其中需要添加一些元字段,用户可以使用这些元字段连接媒体。有一个条件可以将任何一个mime类型的附件附加到单个post。

我创建了两个元字段,1)附件类型和2)附件。在附件类型中,用户可以选择附件类型,如文档、pdf、音频、视频或图像。在第二个字段中,用户可以从媒体管理器中选择媒体。

现在,我面临的问题是,有时用户选择的介质类型与选择的附件类型不同。例如,他选择了附件类型视频,并用post附加了图像或音频文件。

如何将媒体管理器限制为特定的mime类型?如果选择了用户,则Media Manager将仅显示音频文件。或者,如果选择了用户,则仅在Media Manager中显示图像。

3 个回复
SO网友:Anh Tran

这不是完整的解决方案,它只是您使用媒体上传器的一个方向

首先,您需要知道如何在插件/主题中实现媒体上传器。您可以从文件中了解到:wp-admin/js/custom-background.js WP用于自定义背景页。

如果这太难理解,那么请阅读this tutorial, 它为您解释了每一行代码。

其次,当您实现媒体上传器时,您知道媒体帧有一个选项对象。该对象包含许多选项的列表,这些选项没有文档记录。我们只能通过查看wp-includes/js/media-views.js 文件

为了满足您的需要,您需要传递一个选项type 对于library, 像这样的事情:

// Create a frame only if needed
if ( !frame )
{
    var frameOptions = ( {
        className   : \'media-frame rwmb-file-frame\',
        multiple    : true,
        title       : \'Select files\'
    } );

    if ( mimeType )
    {
        frameOptions.library = {
            type : mimeType
        };
    }

    frame = wp.media( frameOptions );
}

// Open media uploader
frame.open();

// Remove all attached \'select\' event
frame.off( \'select\' );

// Handle selection
frame.on( \'select\', function() {... } );
代码中有一个变量:mimeType, 当用户从第一个输入字段中选择类型时,需要使用jQuery将值传递给它。

SO网友:Ravinder Kumar

因为您想限制用户根据附件类型自定义元数据查看媒体文件。

1、获取post meta

get_post_meta($post->ID,\'attachment-type\',true)
2。到Change the default-view of Media Library 使用attachment类型post-meta的驱动器代码

SO网友:Vigs

$post->ID 指当前附件。附件、帖子、页面、菜单都被wordpress视为“帖子”。

$type = get_post_mime_type($post->ID);

    if ( $type == "image/jpeg" or $type == "image/gif" or $type == "image/png")
    {
     echo \'This attachment is a \'.$type.\' attachment.\';
    }    
这并不完全是对总体问题的回答,但它演示了如何使用php至少获得附件或“post”的mime类型。

要使用jquery执行此操作,可能需要:

如果有可用的预渲染链接,可以使用jquery查找位于链接末尾的文件exstension,并基于此设置条件。

结束