C
by ulfben 4.4 (25 reviews)

Custom Upload Dir

Choose your own upload folders using post titles, categories, dates and more. Keep files easy to find when browsing your server.

Custom Upload Dir ranks #3,187 among WordPress.org plugins with 5,000+ active installations, is #377 of 6,651 in the Media category, a 4.4/5 rating from 25 reviews, and was last updated Oct 13, 2026. Data from WordPress.org, refreshed twice daily — see methodology.

Compatible with WP 7.1
v3.6.0 Current Version v3.6.0
Updated 2 weeks ago Last Update on 13 Oct, 2026
Refreshed 2 days ago Last Refreshed on
#377 of 6,651 in Media Top 5% by installs Downloads -27.9% this week Actively maintained
View on WordPress.org
Rank
#3,187
— No change
Active Installs
5K+
— No change
KW Avg Position
66
— No change
Downloads
109.4K
+10 today
Support Resolved
100%
— No change
Rating
88%
Review 4.4 out of 5
4.4 (25 reviews)

Next Milestone 6K

Total Progress 33.1%
5K+ 6K+
264
Ranks to Climb
-
Growth Needed
8,000,000
Active Installs
Pro

Unlock Exact Install Count

See the precise estimated active installs for this plugin, calculated from real-time ranking data.

  • Exact install estimates within tiers
  • Track install growth over time
  • Milestone progress predictions
Upgrade to Pro
Need 669 more installs to reach 6K+

Rank Changes

3,182 3,191 3,199 3,208 3,216 25-10-2026 26-10-2026 27-10-2026 28-10-2026 29-10-2026 30-10-2026 31-10-2026 01-11-2026
3,182 3,192 3,202 3,212 3,222 17-10-2026 18-10-2026 19-10-2026 20-10-2026 21-10-2026 22-10-2026 23-10-2026 24-10-2026 25-10-2026 26-10-2026 27-10-2026 28-10-2026 29-10-2026 30-10-2026 31-10-2026 01-11-2026
Current #3,187
Change
Best #

Upgrade to Pro

Unlock 30-day and 90-day rank history charts with a Pro subscription.

Upgrade Now

Active Installs Growth

Active Installs 0,000,000+
Growth +0.0%
Peak 0,000,000

Downloads Growth

0 100 25-10-2026 26-10-2026 27-10-2026 28-10-2026 29-10-2026 30-10-2026 31-10-2026 01-11-2026
0 50 100 150 200 17-10-2026 18-10-2026 19-10-2026 20-10-2026 21-10-2026 22-10-2026 23-10-2026 24-10-2026 25-10-2026 26-10-2026 27-10-2026 28-10-2026 29-10-2026 30-10-2026 31-10-2026 01-11-2026
Downloads
Growth
Peak

Upgrade to Pro

Unlock 30-day, 90-day, and yearly download history charts with a Pro subscription.

Upgrade Now

Reviews & Ratings

4.4
25 reviews
Overall 88%
5
21 (84%)
4
0 (0%)
3
0 (0%)
2
1 (4%)
1
3 (12%)

Support Threads Overview

Resolved
Unresolved
1
Total Threads
1
Resolved
0
Unresolved
100%
Resolution Rate

Security History

Source: WPVulnerability

No known vulnerabilities on record for Custom Upload Dir. Checked 1 month ago.

TL;DR

AI summary of the plugin's readme

This plugin is for WordPress site owners and administrators who want their uploaded media files organized to mirror their site's content structure. It solves the problem of WordPress's limited year/month upload folders by letting users build custom upload paths from variables like post title, category, author, and date.

  • Custom upload path variables
  • Sort by post title
  • Sort by category or taxonomy
  • Sort by post author
  • Sort by mime type
  • Sort by author role
  • Sort by file extension
  • Gutenberg editor support

Frequently Asked Questions

Common questions about Custom Upload Dir

Custom Upload Dir organizes the actual files on your web server. The WordPress Media Library looks and works as usual. The folder structure is useful when you browse your files through FTP, your hosting file manager or a backup.
No. It chooses the destination for new uploads. Changing the template, renaming a post or changing its categories leaves previously uploaded files and their URLs alone.
When uploading to a post or page, %year%, %monthnum% and %day% use its date, even for backdated or scheduled posts. A draft without a date uses the current date in your site's timezone. The %upload_year%, %upload_month% and %upload_day% tokens always use the upload date in that timezone. %postname% uses the slug; if there is none, it uses the title or, for an unnamed draft, the post ID. Uploads without a parent use the current site-local time and omit post-specific tokens. Name and save a post before uploading when you want its slug in the folder path. Changing a slug later does not move earlier uploads.
Include /%year%/%monthnum%/ for the post date or /%upload_year%/%upload_month%/ for the upload date. To store files directly in the upload folder, use an empty custom template. Custom templates control the complete path beneath the upload folder; WordPress's year/month setting does not add extra folders to them. Choose Leave to WordPress to use its normal behavior instead. With Settings → Media → Organize my uploads into month- and year-based folders enabled, WordPress uses dated folders; with it disabled, files go directly in the upload folder. Uploads to backdated posts can use the post's date. Other upload plugins may also affect the destination.
The settings page lists the available tokens. You can also use a taxonomy's name as a token: for example, %product_cat% for product categories. Unrecognized tokens are left out of the path. %file_type% uses the file's MIME type, such as image/jpeg, creating two folder levels; %file_ext% uses its extension, such as jpg. Legacy aliases remain available: %mime_type% → %file_type%, %post_parent% → %parent_name%, %month% → %monthnum%, %ID% → %post_id%, %post_name% → %postname%, and %post_author% → %author%. The removed %permalink% token is not supported. The older %post_category% and %post_categories% tokens are retained; prefer %category% for hierarchy settings.
Use cud_path_tokens to supply a map of tokens to scalar values, before unresolved tokens are removed. This example adds %site_section%: function my_cud_tokens( $tokens, $post_id, $file ) { $tokens['%site_section%'] = $post_id ? 'posts' : 'library'; return $tokens; } add_filter( 'cud_path_tokens', 'my_cud_tokens', 10, 3 ); Built-in post/file tokens take precedence, then custom tokens, then taxonomy and unknown tokens. Replacement values are literal data and are not recursively expanded. The existing cud_generate_path filter still receives the expanded path and parent ID. Use it to change the final path, not to resolve custom tokens: function my_cud_final_path( $path, $post_id ) { return '/archive' . $path; } add_filter( 'cud_generate_path', 'my_cud_final_path', 10, 2 ); For uploads without a parent, the parent argument to these two filters is an empty string. Paths are relative to the upload base, even when written with a leading slash. Drive/URL prefixes, control characters and . or .. directory segments are rejected after filters run. Invalid settings retain the previous saved settings.
Native uploads and REST media creation carry their request context automatically. A programmatic call to media_handle_sideload() does not expose its parent argument to upload filters. Importers can use the cud_upload_post_id filter to supply that ID for the duration of their upload, then remove their callback in a finally block. Without that context, the upload uses the unattached template behavior. Other upload systems or custom REST endpoints may need their own adapter.
The template creates folders beneath WordPress's existing upload base. To change that base on a single-site installation, WordPress supports an UPLOADS constant in wp-config.php, relative to the WordPress installation directory: define( 'UPLOADS', 'wp-content/your-folder' ); Changing the base on an existing site requires a separate migration of files and URLs. This plugin does not perform that migration. Removing the plugin leaves uploaded files in place.

Sign In / Register

You need to sign in or register to use this feature.