رفتن به مطلب

تغییر مسیر ذخیره شدن فایل های رسانه بر اساس پسوند فایل ها


Hoomanhpc2

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

سلام. من جستجوهایی در این باره کردم. اما فقط آموزش های مربوط به تغییر مسیر ذخیره شدن فایل های رسانه رو پیدا کردم.

حال می خواستم بدونم که آیا می توان محل ذخیره شدن فایل ها رو بر اساس پسوند آن ها تغییر داد؟

برای مثال فایل های فشرده در site.com/uploads/archives و تصاویر هم در site.com/uploads/images قرار بگیره.

ممنون...

لینک به ارسال

تست کنید

فیلترها مشخص هست براساس mime-type هست


//~ change upload dir
add_filter('upload_dir', 'choose_upload_dir');
//~ upload image
$upload = wp_handle_upload( $_FILES['your_form_input_name'], array('test_form' => false) );
//~ change upload dir back
remove_filter('upload_dir', 'choose_upload_dir');
function choose_upload_dir($upload) {
//~ your file to upload
$file_type = $_FILES['your_form_input_name']['type'];
//~ switch between file types
switch($file_type) {
//~ if type is 'png' then upload subdir is '/png' and so on
case 'image/png':
$type_dir = '/png';
break;
case 'image/jpeg':
$type_dir = '/jpg';
break;
default:
$type_dir = '/others';
}
$upload['subdir'] = $upload['subdir'].$type_dir;
$upload['path'] = $upload['basedir'].$upload['subdir'];
$upload['url'] = $upload['baseurl'].$upload['subdir'];
return $upload;
}

http://ernieleseberg.com/wordpress-custom-upload-directory/

لینک به ارسال

این دستورات رو شما کجا اضافه کردید ؟

توی فانکش اضافه کنید.

دقت کنید دستورات php باید بین تگ های :


<?php
کدهای شما اینجا!
?>

باشن.

لینک به ارسال

بله. در functions.php قرار داده بودم. همینطور به نکته ای که اشاره کرده توجه کردم. یعنی زیر


<?php

قرار دادم.

اونطوری که متوجه شدم ارور مربوط به این قسمت هست:

$upload = wp_handle_upload( $_FILES['your_form_input_name'], array('test_form' => false) );

ویرایش شده توسط hoomanhpc2
لینک به ارسال
Fatal error: Call to undefined function wp_handle_upload() in F:\Program Files\xampp\htdocs\user3\wp-content\themes\twentytwelve\functions.php on line 5

لینک به ارسال

کد قبلی مشکل داشت

اینو تست کنید


/*
* Change upload directory for PDF files
* Only works in WordPress 3.3+
*/
add_filter('wp_handle_upload_prefilter', 'wpse47415_pre_upload');
add_filter('wp_handle_upload', 'wpse47415_post_upload');
function wpse47415_pre_upload($file){
add_filter('upload_dir', 'wpse47415_custom_upload_dir');
return $file;
}
function wpse47415_post_upload($fileinfo){
remove_filter('upload_dir', 'wpse47415_custom_upload_dir');
return $fileinfo;
}
function wpse47415_custom_upload_dir($path){
$extension = substr(strrchr($_POST['name'],'.'),1);
if(!empty($path['error']) || $extension != 'pdf') { return $path; } //error or other filetype; do nothing.
$customdir = '/pdf';
$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;
}

+ افزونه برای این کار

http://wordpress.org/extend/plugins/custom-upload-dir/

لینک به ارسال

ممنون. کار می کنه. ولی اگه بخوام چند نوع پسوند رو انتخاب کنم باید چه تغییری بدم؟

برای مثال پسوندهای rar و zip در دایرکتوری archives قرار بگیره و پسوندهای jpg و png در images

لینک به ارسال

آخرین کدی که آقا پارسا دادن فقط مسیر ذخیره شدن یک فایل رو میشه تغییر داد. چطور میشه تو این کد تغییراتی ایجاد کرد تا فایل های zip و rar و txt و درمسیر archives قرار بگیره. نمونه:


http://site.com/files/archives/2013/05/filename.rar
http://site.com/files/archives/2013/05/filename.zip
http://site.com/files/archives/2013/05/filename.txt

و فایل های jpg و png و gif هم در مسیر images قرار بگیرن:


http://site.com/files/images/2013/05/filename.jpg
http://site.com/files/images/2013/05/filename.png
http://site.com/files/images/2013/05/filename.gif

البته قسمت site.com/files رو از طریق تنظیمات رسانه می تونم درست کنم. فقط مشکل من بقیه مسیر هست که اگه دوستانی که به php مسلط هستند راهنمایی کنن ممنون میشم.

ویرایش شده توسط hoomanhpc2
لینک به ارسال

add_filter('wp_handle_upload_prefilter', 'wpse47415_pre_upload');
add_filter('wp_handle_upload', 'wpse47415_post_upload');
function wpse47415_pre_upload($file){
add_filter('upload_dir', 'wpse47415_custom_upload_dir');
return $file;
}
function wpse47415_post_upload($fileinfo){
remove_filter('upload_dir', 'wpse47415_custom_upload_dir');
return $fileinfo;
}
function wpse47415_custom_upload_dir($path){
$extension = substr(strrchr($_POST['name'],'.'),1);
if(!empty($path['error'])) { return $path; } //error or other filetype; do nothing.

if($extension == 'txt' || $extension == 'rar' || $extension == 'zip')
$customdir = '/archives';
elseif($extension == 'jpg' || $extension == 'gif' || $extension == 'png')
$customdir = '/images';
else
return $path;
$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;
}

لینک به ارسال

ممنون. تقریبا چیزی که میخوام شده، ولی متأسفانه به صورت ماهانه و سالانه دسته بندی نمی کنه. همه فایل ها رو یکجا جمع می کنه. نمونه:


http://site.com/files/archives/filename.rar

در حالی که تیک مربوط به این گزینه فعال هست. میخوام به صورت زیر بشه:


http://site.com/files/archives/2013/05/filename.rar

شرمنده...

ویرایش شده توسط hoomanhpc2
لینک به ارسال

اگر فرمت فایلها رو بضورت دستی به وردپرس اضافه کردید آرشیو بندی نمیکنه

البته شاید تابعی براش باشه ولی بصورت پیش فرض انجام نمیده

لینک به ارسال

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

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

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

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

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

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

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

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

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