رفتن به مطلب
thismoment

افزونه آپلود و مسیر دهی بر اساس نوع فایل (filetype)

پست های پیشنهاد شده

مهندسین این افزونه رو چک کنید ببینید مشکلاتی داره؟ نداره ؟

من این هک رو در نت پیدا کردم یه خورده هم تغییرش دادم و اونو به عنوان یه افزونه در آوردم شد این کدی که میبینید

کارش اینه که فایل ها بجای ماه و سال رو بر اساس نوع شون آپلود میکنه مثلا تصاویر رو در شاخه ی images آپلود میکنه وید‌ئو ها رو در شاخه video و ...


<?php
/*
Plugin Name: Custom Upload Directory
Plugin URI: http://mysite.ir/
Description: ...
Version: 1.0.1
Author: thismoment
Author URI: http://mysite.ir/
License: GPL2
*/
add_filter('wp_handle_upload_prefilter', 'my_handle_upload_prefilter');
add_filter('wp_handle_upload', 'my_handle_upload');
function my_handle_upload_prefilter( $file )
{
add_filter('upload_dir', 'my_custom_upload_dir');
return $file;
}
function my_handle_upload( $fileinfo )
{
remove_filter('upload_dir', 'my_custom_upload_dir');
return $fileinfo;
}
function my_custom_upload_dir($path)
{
// Determines if uploading from inside a post/page/cpt
// If not, default Upload folder is used
$use_default_dir = (
isset($_REQUEST['post_id'] )
&& $_REQUEST['post_id'] == 0
)
? true : false;
if( !empty( $path['error'] ) || $use_default_dir )
return $path; //error or uploading not from a post/page/cpt
// Save uploads in FILETYPE based folders. When using this method,
// you may want to change the check for $use_default_dir
$extension = substr( strrchr( $_POST['name'], '.' ), 1 );
switch( $extension )
{
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
$customdir = '/images';
break;
case 'mp4':
case 'm4v':
case 'mov':
case 'wmv':
case 'avi':
case 'mpg':
case 'mpeg':
case 'ogv':
case '3gp':
case '3g2':
$customdir = '/videos';
break;
case 'mp3':
case 'ogg':
case 'wav':
case 'm4a':
$customdir = '/audio';
break;
case 'pdf':
case 'doc':
case 'docx':
case 'ppt':
case 'pptx':
case 'pps':
case 'ppsx':
case 'odt':
case 'xls':
case 'xlsx':
case 'txt':
$customdir = '/documents';
break;
case 'exe':
case 'apk':
$customdir = '/apps';
break;
default:
$customdir = '/others';
break;
}
//remove default subdir (year/month)
$path['path'] = str_replace($path['subdir'], '', $path['path']);
$path['url'] = str_replace($path['subdir'], '', $path['url']);
$path['subdir'] = $customdir;
$path['path'] .= $customdir;
$path['url'] .= $customdir;
return $path;
}
?>

ویرایش شده توسط thismoment

به اشتراک گذاری این ارسال


لینک به ارسال

مهندسین این افزونه رو چک کنید ببینید مشکلاتی داره؟ نداره ؟

من این هک رو در نت پیدا کردم یه خورده هم تغییرش دادم و اونو به عنوان یه افزونه در آوردم شد این کدی که میبینید

کارش اینه که فایل ها بجای ماه و سال رو بر اساس نوع شون آپلود میکنه مثلا تصاویر رو در شاخه ی images آپلود میکنه وید‌ئو ها رو در شاخه video و ...


<?php
/*
Plugin Name: Custom Upload Directory
Plugin URI: http://mysite.ir/
Description: ...
Version: 1.0.1
Author: thismoment
Author URI: http://mysite.ir/
License: GPL2
*/
add_filter('wp_handle_upload_prefilter', 'my_handle_upload_prefilter');
add_filter('wp_handle_upload', 'my_handle_upload');
function my_handle_upload_prefilter( $file )
{
add_filter('upload_dir', 'my_custom_upload_dir');
return $file;
}
function my_handle_upload( $fileinfo )
{
remove_filter('upload_dir', 'my_custom_upload_dir');
return $fileinfo;
}
function my_custom_upload_dir($path)
{
// Determines if uploading from inside a post/page/cpt
// If not, default Upload folder is used
$use_default_dir = (
isset($_REQUEST['post_id'] )
&& $_REQUEST['post_id'] == 0
)
? true : false;
if( !empty( $path['error'] ) || $use_default_dir )
return $path; //error or uploading not from a post/page/cpt
// Save uploads in FILETYPE based folders. When using this method,
// you may want to change the check for $use_default_dir
$extension = substr( strrchr( $_POST['name'], '.' ), 1 );
switch( $extension )
{
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
$customdir = '/images';
break;
case 'mp4':
case 'm4v':
case 'mov':
case 'wmv':
case 'avi':
case 'mpg':
case 'mpeg':
case 'ogv':
case '3gp':
case '3g2':
$customdir = '/videos';
break;
case 'mp3':
case 'ogg':
case 'wav':
case 'm4a':
$customdir = '/audio';
break;
case 'pdf':
case 'doc':
case 'docx':
case 'ppt':
case 'pptx':
case 'pps':
case 'ppsx':
case 'odt':
case 'xls':
case 'xlsx':
case 'txt':
$customdir = '/documents';
break;
case 'exe':
case 'apk':
$customdir = '/apps';
break;
default:
$customdir = '/others';
break;
}
//remove default subdir (year/month)
$path['path'] = str_replace($path['subdir'], '', $path['path']);
$path['url'] = str_replace($path['subdir'], '', $path['url']);
$path['subdir'] = $customdir;
$path['path'] .= $customdir;
$path['url'] .= $customdir;
return $path;
}
?>

یه چیز دیگه: وردپرس چه فرمت فایل هایی رو اجازه میده آپلود کرد؟ و محدودیت هاش(چه فرمت فایل هایی ممنوعه) چیه؟

به اشتراک گذاری این ارسال


لینک به ارسال

اگه خودمون توی مدیریت وردپرس تیک گزینه ماهانه و سالانه رو برداریم نیازی به این قسمت از افزونه بالایی هست؟


//remove default subdir (year/month)
$path['path'] = str_replace($path['subdir'], '', $path['path']);
$path['url'] = str_replace($path['subdir'], '', $path['url']);
$path['subdir'] = $customdir;
$path['path'] .= $customdir;
$path['url'] .= $customdir;
return $path;

به اشتراک گذاری این ارسال


لینک به ارسال

آپدیت افزونه


<?php
/*
Plugin Name: Custom Upload Directory
Description: Organize file uploads by File Type (mov, gif, png, mp3...)
Version: 1.0.2
Author: thismoment
License: GPL2
*/
add_filter('wp_handle_upload_prefilter', 'my_handle_upload_prefilter');
add_filter('wp_handle_upload', 'my_handle_upload');
function my_handle_upload_prefilter( $file )
{
add_filter('upload_dir', 'my_custom_upload_dir');
return $file;
}
function my_handle_upload( $fileinfo )
{
remove_filter('upload_dir', 'my_custom_upload_dir');
return $fileinfo;
}
function my_custom_upload_dir($path)
{
// Determines if uploading from inside a post/page/cpt
// If not, default Upload folder is used
$use_default_dir = (
isset($_REQUEST['post_id'] )
&& $_REQUEST['post_id'] == 0
)
? true : false;
if( !empty( $path['error'] ) || $use_default_dir )
return $path; //error or uploading not from a post/page/cpt
// Save uploads in FILETYPE based folders. When using this method,
// you may want to change the check for $use_default_dir
$extension = substr( strrchr( $_POST['name'], '.' ), 1 );
switch( $extension )
{
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
case 'ico':
case 'svg':
$customdir = '/images';
break;
case 'mp3':
case 'm4a':
case 'ogg':
case 'wav':
$customdir = '/audio';
break;
case 'mp4':
case 'm4v':
case 'mov':
case 'wmv':
case 'avi':
case 'mpg':
case 'ogv':
case '3gp':
case '3g2':
$customdir = '/videos';
break;
case 'pdf':
case 'doc':
case 'docx':
case 'ppt':
case 'pptx':
case 'pps':
case 'ppsx':
case 'odt':
case 'xls':
case 'xlsx':
case 'txt':
$customdir = '/documents';
break;
case 'zip':
case 'rar':
$customdir = '/compressed';
break;
case 'm':
case 'sldprt':
case 'sldasm':
case 'slddrw':
$customdir = '/source';
break;
default:
$customdir = '/others';
break;
}
//remove default subdir (year/month)
$path['path'] = str_replace($path['subdir'], '', $path['path']);
$path['url'] = str_replace($path['subdir'], '', $path['url']);
$path['subdir'] = $customdir;
$path['path'] .= $customdir;
$path['url'] .= $customdir;
return $path;
}
add_filter('upload_mimes','add_custom_mime_types');
function add_custom_mime_types($mimes){
return array_merge($mimes,array (
'ac3' => 'audio/ac3',
'mpa' => 'audio/MPA',
'flv' => 'video/x-flv',
'm' => 'application/matlab',
'svg' => 'image/svg+xml'
));
}
?>

که میتونید در این قسمت فرمت های دیگه ای رو اضافه کنید


add_filter('upload_mimes','add_custom_mime_types');
function add_custom_mime_types($mimes){
return array_merge($mimes,array (
'ac3' => 'audio/ac3',
'mpa' => 'audio/MPA',
'flv' => 'video/x-flv',
'm' => 'application/matlab',
'svg' => 'image/svg+xml'
));
}

ولی خب همچنان کسی نگفت این افزونه ایرادی داره یا نه :/

به اشتراک گذاری این ارسال


لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...