=== Custom Upload Dir === Contributors: ulfben Donate link: https://www.amazon.com/gp/registry/wishlist/2QB6SQ5XX2U0N/105-3209188-5640446?reveal=unpurchased&filter=all&sort=priority&layout=standard&x=21&y=17 Tags: upload, organize, files, media Requires at least: 3.9 Tested up to: 5.4.2 Stable tag: 3.4.6 Requires PHP: 5.2 Keeps your uploaded files organized in smart folder structures. == Description == 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](http://wordpress.org/extend/plugins/custom-upload-dir/screenshots/). 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](http://www.ulfbenjaminsson.com)* = Changelog v. 3.4.6 (2020-07-17) = 1. fixed a null dereference error. ([thanks, defotoverij](https://wordpress.org/support/topic/warning-array_key_exists-expects-parameter-2-to-be-array-null-given/)!) = 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'](https://wordpress.org/plugins/custom-upload-dir/installation/) 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](http://wordpress.org/support/topic/search-and-mobile-apps-compatibility?replies=6#post-3837193). 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.](http://wordpress.org/extend/plugins/custom-upload-dir/changelog/) == Changelog == = Changelog v. 3.4.6 (2020-07-17) = 1. fixed a null dereference error. ([thanks, defotoverij](https://wordpress.org/support/topic/warning-array_key_exists-expects-parameter-2-to-be-array-null-given/)!) = 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'](https://wordpress.org/plugins/custom-upload-dir/installation/) 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](http://wordpress.org/support/topic/search-and-mobile-apps-compatibility?replies=6#post-3837193). 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](http://wordpress.org/support/topic/plugin-custom-upload-dir-unattached-images-upload-to-19700101?replies=8)) **Changelog v. 3.0.1 (2010-11-01)** 1. [Fix for "undefined function get_userdata()"](http://wordpress.org/support/topic/plugin-custom-upload-dir-fatal-error-call-to-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'](http://trac.wordpress.org/ticket/8753) 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 1. Added 'post_author' 1. Fixed 'post_title' (broken since WP 2.4) 1. Fixed issue with use_yearmonth overriding post date 1. Tons of small(ish) updates 1. Removed Mediacaster-support **Changes in v.2.0** (2007-10-19) 1. Mediacaster compability. 1. Added proper configuration screen 1. Massive code overhaul 1. Name change (previously "Daily Upload Dir") == Upgrade Notice == = 3.4.4 = Fixed a few PHP warnings, and removed %permalink% template as it broke drafts. = 3.4.3.2 = Added support for uploads from the Gutenberg editor. = 3.4.2 = Added filter, allows users to easily extend the list of tags with anything they want. = 3.4 = Added %file_ext%, support for uploads from WordPress apps and fixed some errors. = 3.3.2 = Removed dead code and updated to use WordPress API properly = 3.3.1 = Added %post_parent% and some fixes = 3.3 = Support for WordPress 3.3 and many improvements! = 3.0.2 = Fixes post_author and and post_date behaviour in the media uploader. = 3.0.1 = [Fix for "undefined function get_userdata()"](http://wordpress.org/support/topic/plugin-custom-upload-dir-fatal-error-call-to-undefined-function-get_userdata) (thanks somatic!) = 3.0 = Lots of new features and more flexible interface. == Installation == 1. Extract the `custom-upload-dir`-folder and transfer it to the `/wp-content/plugins/` directory 1. Activate the plugin through the 'Plugins' menu in WordPress 1. Customize your directory structure in `Settings -> Custom Upload Dir` == Frequently Asked Questions == = 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');` == Screenshots == 1. The configuration screen. 2. Shows how the upload path corresponds to the post's timestamp. == Additional Info == Copyright (C) 2007-2020 [Ulf Benjaminsson](https://www.ulfbenjaminsson.com) 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