将上传文件类型限制为一种自定义帖子类型

时间:2012-11-06 作者:RRikesh

是否有任何方法可以根据当前帖子类型限制允许上载的文件类型?

例如,我有一个名为documents. 我有一个File upload 自定义字段,它调用媒体上传器(Media upload.php),我可以上传一个文件。我想将文件限制为pdf, docxls.

然而,我也有一个帖子类型,叫做illustrations 其中我想将上载文件类型限制为jpeg, pnggif.

我目前正在尝试Mike Schinkel的答案Limit image upload to one and disable audio, video and other document file types to upload 限制文件类型,但我不知道如何根据当前的帖子类型更改允许的文件类型数组。

 if (\'image\'!=$category || !in_array($type,array(\'jpg\',\'jpeg\',\'gif\',\'png\'))) {
    $file[\'error\'] = "Sorry, you can only upload a .GIF, a .JPG, or a .PNG image file.";
}
我试过使用get_current_screen() 但它返回媒体上载程序本身的id。我还尝试使用global $post 但我什么也没得到。

或者add a filter to upload_mimes 基于当前职位类型?

有什么建议吗?

Answer:

if( isset( $_REQUEST[\'post_id\'] ) && $post_type = get_post_type( absint( $_REQUEST[\'post_id\'] ) ) ) {

    if( \'illustrations\' === $post_type ){
     $filetype = array(\'png\', \'jpeg\', \'gif\', \'jpg\');
     $message = \'Only PNG, JPEG, JPG, and GIF allowed.\';
    }

     elseif( \'documents\' === $post_type ){
      $filetype = array(\'doc\',\'docx\',\'pdf\',\'xls\', \'xlsx\', \'zip\');
      $message = \'Only PDF, DOC, DOCX, XLS, XLSX, and ZIP allowed. \';
    }

  }

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

我很确定$_REQUEST[\'post_id\'] 将保留您要附加上载的帖子ID。也许是这样的:

if ( isset( $_REQUEST[\'post_id\'] ) && $post_id = absint( $_REQUEST[\'post_id\'] ) ) {
    switch ( get_post_type( $post_id ) ) {
        case \'document\' :
            if ( ! in_array( $type, array( \'pdf\', \'msword\', \'vnd.ms-excel\' ) ) )
                $file[\'error\'] = \'...\';
            break;

        case \'illustration\' :
            // and so forth
    }
}

结束

相关推荐

将插件的子目录+文件移动到wp-Content/Uploads-目录的最佳方式是什么?

我是插件传单地图标记的开发人员(http://www.mapsmarker.com - “通过OpenStreetMap、OGD Vienna或任何自定义WMTS地图锁定、组织和显示您最喜爱的地点”),但有一个问题:该插件包含来自“地图图标”集合(mapicons.nicolasmollet.com)的大约100个标记图标,可用于标记您最喜爱的地点。这些图标存储在wp-content\\plugins\\leaflet-mapsmarker\\img\\mapicons. 现在,用户可以从集合中上传其他