Hoomanhpc2

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

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

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

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

برای مثال فایل های فشرده در 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

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


لینک به پست

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

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

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


لینک به پست

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

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

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

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


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

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

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


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