Custom Upload Dir

Custom Upload Dir

ulfben

WordPress allow you to put uploads in year- and month-based folders. Custom Upload Dir is more flexible. You can construct paths from variables like post title, category, post author, post date and many more.

I created Custom Upload Dir ensure my file system is always mirroring the site structure. This ensures I can always find files manually when needed. It also simplifies backups and platform migrations.

//Ulf Benjaminsson

Changelog v. 3.4.6 (2020-07-17)

  1. fixed a null dereference error. (thanks, defotoverij!)

Changelog v. 3.4.5 (2020-05-05)

  1. added french translation (thanks, bibi699depreau!)

Changelog v. 3.4.4 (2019-03-24)

  1. Fixed a few PHP warnings
  2. Removed the %permalink% template as it broke uploads to drafts.

Changelog v. 3.4.3.2 (2019-03-24)

  1. Added support for the Gutenberg editor.

Changelog v. 3.4.2 (2015-03-16)

  1. Added filter ‘cud_generate_path’ so you can easily adjust the path with any variable you want.
  2. Added %mime_type% to sort files by mime type
  3. Added %author_role% to sort files by author role.
  4. Coming: support for per-post-type settings. Eg: every post type can have their own rules for where to place uploads. Currently missing the admin interface. If you feel like helping out, let me know.

Changelog v. 3.4 (2013-02-09)

  1. Added %file_ext% to sort by file type
  2. Added tentative support for uploads from WordPress apps.
  3. Removed setting for “Base upload folder” as WP core no longer exposes this
  4. Cleared out some PHP error on the admin page
  5. Fixed leaking CSS on admin page

Changelog v. 3.3 (2011-12-18)

  1. Support for WordPress 3.3
  2. Support for tags and categories
  3. Support for custom taxonomies
  4. Added %current_user%, %permalink%
  5. Added all permalink tags
  6. Added test-function to admin page

Older changelogs moved here.

Additional Info

Copyright (C) 2007-2019 Ulf Benjaminsson

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

How do I change base upload folder?

Since WP 3.5, by a setting in wp-config.php:

define('UPLOADS', WP_CONTENT_DIR.'/your-folder');

Just be aware that this will likely break all paths to your previously uploaded stuff.

How can I define my own tags?

Use the cud_generate_path-filter, like so:

function my_generate_path($template, $post_id){
    $my_tags = array('%tag1%','%tag2%');
    $replace = array($data, getData());
    $customdir = str_replace($tags, $replace, $template);
    return $customdir;
}
add_filter('cud_generate_path', 'my_generate_path');

работает как надо

By site4sale on September 4, 2023

Большое спасибо из России за качественный плагин.
Установил на несколько сайтов.

exceptionally easy and powerful

By rjacob999 on September 17, 2022

does the job; EXCELLENT! thanks :)

French translation

By bibi699depreau on May 2, 2020

Addressed to the author of the plugin : Hello, French, and occasional voluntary developer for associations, I discovered your plugin "custom upload dir" which I found very interesting. Like me, many French people of my generation, (soon to be in their seventies) have limited use of English. So I made a translation of the plugin which, for information, works very well with PHP 5.6.4 and WordPress 5.4 – en_FR You will find attached the plugin with the translation.

Useful custom folder upload yyyy/mm/dd

By nhantam on September 6, 2019

Very useful & convenient to manage images in the long run if your website posts a lot of images

not working at all with imports

By holamediasolutions on June 29, 2019

Dosnt work when you import export post or products

Perfect! Very fast support

By Jabe on March 24, 2019

Does perfectly what it's supposed to do. Used it for years, then it was broken after Gutenberg update, I reported it in the forum and the developer fixed it on the following day. Those options should be included by default in WordPress to really customize it.

Elegantly Simple - Critical Tool

By Timothy (tdsnowden) on September 21, 2018

Add this to majority of websites built as a standard plugin. Great way to control media directories, helping to avoid space-hogging duplication of re-used images. Works great with current version. Thanks!

Very useful in some cases

By hommealone on March 30, 2018

This is a great plugin which can be very useful for those with large media libraries. It helps to sort the uploads into multiple, manageable folders with a logical and intuitive directory structure. If your site will have a large media library, the normal year/month folders created during your main site build-out period can become huge - and therefore very hard to back up. This plugin solves that problem. If you have a site in which you will often go back and edit posts and pages and CPTs, you'll find that standard WP folder structures are misleading: media that you add to a post a year later will not be put in the folder that corresponds to the current year/month, but rather in the dated folder of when the post was originally created. It can be very hard to find files. This plugin solves that problem; you'll never have trouble finding a file again. The plugin has a few quirks and shortcomings: You must always name and publish your post/page/CPT before you can upload files to it. This can be an issue until you get into that habit, but once you do it is not a big issue. %permalink% should not be one of the options that you can choose to use in your path structure, in my opinion. Using it breaks the WP default Draft functionality. (So I just don't use it which avoids the issue. This may be fixed in future releases.) Documentation could be better; but it is a free plugin, after all! Plugin author is not great at updating the plugin - but that never effects the functionality. Again, give the guy a break, it's a free plugin. So yes, a few quirks and minor shortcomings, but overall a terrific plugin.

plugin

By mrandre on May 22, 2017

this not working anymore

Just awesome!

By capuski on September 3, 2016

This plugin is simple, right to the point, and does the job perfectly. I can't wait for this coming feature: Support for per-post-type settings. This will save my life!

Changelog v. 3.4.5 (2020-05-05)

  1. added french translation (thanks, bibi699depreau!)

Changelog v. 3.4.4 (2019-03-24)

  1. Fixed a few PHP warnings
  2. Removed the %permalink% template as it broke uploads to drafts.

Changelog v. 3.4.3.2 (2019-03-24)

  1. Fixed ‘upload_dir’ not providing $post_id in Gutenberg editor.

Changelog v. 3.4.1 (2015-03-16)

  1. Added filter ‘cud_generate_path’ so you can easily adjust the path with any variable you want.
  2. Added %mime_type% to sort files by mime type
  3. Added %author_role% to sort files by author role.
  4. Coming: support for per-post-type settings. Eg: every post type can have their own rules for where to place uploads. Currently missing the admin interface. If you feel like helping out, let me know.

Changelog v. 3.4 (2013-02-09)

  1. Added %file_ext% to sort by file type
  2. Added tentative support for uploads from WordPress apps.
  3. Removed setting for “Base upload folder” as WP core no longer exposes this
  4. Cleared out some PHP error on the admin page
  5. Fixed leaking CSS on admin page

Changelog v. 3.3.2 (2011-12-29)

  1. Updated init to use WordPress API properly
  2. Removed dead code

Changelog v. 3.3.1 (2011-12-27)

  1. Fixed poor sanitization of post slugs (%post_name%)
  2. Added %post_parent%
  3. Fixed settings not always initializing

Changelog v. 3.3 (2011-12-18)

  1. Support for WordPress 3.3
  2. Support for tags and categories
  3. Support for custom taxonomies
  4. Added %current_user%, %permalink%
  5. Added all permalink tags
  6. Added test-function to admin page

Changelog v. 3.0.2 (2011-07-29)

  1. Fix for post_author not working
  2. Fix timestamps from the media uploader (thanks; alx359)

Changelog v. 3.0.1 (2010-11-01)

  1. Fix for “undefined function get_userdata()” (thanks somatic!)

Changelog v. 3.0 (2010-10-21)

  1. Rewrote entire plugin for WordPress 3.0
  2. A slew of new placeholders for building path’s with
  3. A new interface to allow arbitrary strings in path
  4. Error messages when uploading to un-named or un-dated posts
  5. Added translation support

Changelog v.2.5.4 (2008-12-31)

  1. Adjusted the test case. (Pedja)

Changelog v.2.5.3 (2008-12-30)

More problems have crept up due to the massive amount of dry runs of ‘upload_dir’ in WP 2.7.

  1. Added quick bail for every call that’s not for a file upload. (props to Pedja Ljubomirovic (Canada))

Changelog v.2.5.2 (2008-12-15)

  1. Fixed problem with plugin blocking deletion/editing of attached files.

Changes in v.2.5.1 (2008-12-14)

  1. Fixed Custom Upload Dir breaking WP 2.7 when called from the loop

Changes in v.2.5 (2008-11-15)

  1. Support for WP 2.7-beta1
  2. Added ‘post_author’
  3. Fixed ‘post_title’ (broken since WP 2.4)
  4. Fixed issue with use_yearmonth overriding post date
  5. Tons of small(ish) updates
  6. Removed Mediacaster-support

Changes in v.2.0 (2007-10-19)

  1. Mediacaster compability.
  2. Added proper configuration screen
  3. Massive code overhaul
  4. Name change (previously “Daily Upload Dir”)
  1. Extract the custom-upload-dir-folder and transfer it to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Customize your directory structure in Settings -> Custom Upload Dir

Reviews

4.4 out of 5 stars

  • Version: 3.4.6
  • Last updated: 2 years ago
  • Active installations: 6K
  • WordPress version: 3.9
  • Tested up to: 6.0.9
  • PHP version: 5.2