不同文件类型的上传路径不同

时间:2015-07-24 作者:idolisedmedia

我想为不同的文件提供两个不同的路径。

例如,我拥有全部。zip和图像文件都位于相同的位置。

我希望在一个路径中包含图像(例如wp内容/上载/图像/)

以及其他位置/路径中的所有zip文件(例如wp内容/上载/产品/)

但我需要的是,当我在媒体库中添加新帖子时,它们会自动输入/上传到正确的路径中。

我怎样才能做到这一点,这可能吗?

1 个回复
SO网友:Luke Wale

Change upload directory for PDF Files 似乎是前进的良好垫脚石。

虽然未经测试,但从代码上看,我的改编将遵循。。。

<?php

    add_filter(\'wp_handle_upload_prefilter\', \'custom_media_library_pre_upload\');
    add_filter(\'wp_handle_upload\', \'custom_media_library_post_upload\');

    function custom_media_library_pre_upload($file){
        add_filter(\'upload_dir\', \'custom_media_library_custom_upload_dir\');
        return $file;
    }

    function custom_media_library_post_upload($fileinfo){
        remove_filter(\'upload_dir\', \'custom_media_library_custom_upload_dir\');
        return $fileinfo;
    }

    function custom_media_library_custom_upload_dir($path){    
        $extension = substr(strrchr($_POST[\'name\'],\'.\'),1);
        if ( !empty( $path[\'error\'] ) ||  $extension != \'zip\' ) 
        {
            return $path; 
        } //error or other filetype; do nothing. 

        elseif ( $extension = \'zip\' )
        {
            $customdir = \'/products\';
        }
        elseif ( $extension = \'jpg\' || $extension = \'jpeg\' || $extension = \'gif\' || $extension = \'png\')
        {
            $customdir = \'/images\';
        }

        $path[\'path\']    = str_replace($path[\'subdir\'], \'\', $path[\'path\']); //remove default subdir (year/month)
        $path[\'url\']     = str_replace($path[\'subdir\'], \'\', $path[\'url\']);      
        $path[\'subdir\']  = $customdir;
        $path[\'path\']   .= $customdir; 
        $path[\'url\']    .= $customdir;  
        return $path;
    }
这个我会坚持在函数中。php的主题或在相关的主题文件中-不在wordpress核心中,因为更新时会丢失它!

您还可以通过在数组中粘贴匹配项并进行比较来改进我的代码,只是为了简单起见,这样做了。例如。。。

$imagetypes = array( \'jpg\', \'jpeg\', \'gif\', \'png\', \'etc\');
if ( in_array( $extension, $imagetypes ) ) 
{
    $customdir = \'/images\'; 
}

结束

相关推荐

在MEDIA_HANDLE_UPLOAD之后无法移动文件

我正在尝试使用media\\u handle\\u upload()为自定义帖子类型创建元图像上载程序,但它只会返回一个错误,告诉我它无法将图像移动到文件夹“wp content/year/month”-常规上载可以正常工作,不应该存在目录权限问题。。。我之前使用的是wp\\U insert\\U附件,但由于某种原因,我的上载在媒体库中没有缩略图,而且wp Codex声明我应该使用media\\U handle\\U upload来保存其他函数调用。有人能帮忙吗?这是我的代码:/// SAVE MITAR