thismoment

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

11 پست در این موضوع قرار دارد

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

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

کارش اینه که فایل ها بجای ماه و سال رو بر اساس نوع شون آپلود میکنه مثلا تصاویر رو در شاخه ی 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
0

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


لینک به پست

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

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

کارش اینه که فایل ها بجای ماه و سال رو بر اساس نوع شون آپلود میکنه مثلا تصاویر رو در شاخه ی 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;
}
?>

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

0

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


لینک به پست

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


//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;

0

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


لینک به پست

آقایون متخصص این افزونه باگ نداره؟ یه وقت در آینده گزیده نشویم!

0

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


لینک به پست

خیلی خیلی حضور اساتید توی این انجمن کمه

با تشکر

0

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


لینک به پست

آپدیت افزونه


<?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'
));
}

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

0

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


لینک به پست

دوستان mime type فرمت های مختلف رو از کجا میشه گیر آورد؟

0

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


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری