Hoomanhpc2

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

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

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

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

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

ممنون...

0

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


لینک به پست

تست کنید

فیلترها مشخص هست براساس 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/

7

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


لینک به پست

ممنون. ولی باید کجا اضافه کنم؟ چون ارور میده...

0

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


لینک به پست

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

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

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


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

باشن.

3

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


لینک به پست

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


<?php

قرار دادم.

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

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

ویرایش شده در توسط hoomanhpc2
0

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


لینک به پست

چه خطایی؟

0

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


لینک به پست
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

0

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


لینک به پست

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

اینو تست کنید


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

2

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


لینک به پست

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

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

0

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


لینک به پست

آخرین کدی که آقا پارسا دادن فقط مسیر ذخیره شدن یک فایل رو میشه تغییر داد. چطور میشه تو این کد تغییراتی ایجاد کرد تا فایل های 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
0

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


لینک به پست

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

2

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


لینک به پست

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


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

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


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

شرمنده...

ویرایش شده در توسط hoomanhpc2
0

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


لینک به پست

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

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

1

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


لینک به پست

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

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

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

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


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

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

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


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