Plugin Directory

Test out the new Plugin Directory and let us know what you think.

Frontend Uploader

This plugin allows your visitors to upload User Generated Content (media and posts/custom-post-types with media).


You can modify the form as you'd like but you have to make sure that 'post_title' field is present, otherwise upload might fail

Example of default media upload form

Here's example of default form (you don't need to enter all that if you want to use default form, just use [fu-upload-form]):

[fu-upload-form class="your-class" title="Upload your media"]
[input type="text" name="post_title" id="title" class="required" description="Title"]
[textarea name="post_content" class="textarea" id="ug_caption" description="Description (optional)"]
[input type="file" name="photo" id="ug_photo" class="required" description="Your Photo" multiple="multiple"]
[input type="submit" class="btn" value="Submit"]

I get a white screen or "0" when trying to upload a file

The major cause of this is either request timeout or request exceeding maximum request size. This means that either the file was uploading for too long or it was too big. Two PHP settings to look at are: max_execution_time and upload_max_filesize. If you don't have any ability to modify these settings, please contact your hosting company's support.

Where are the plugin's settings?

You can find Frontend Uploader's settings under Settings > Frontend Uploader Settings.

Can I get email notifications?

Yes you can enable this in Settings > Frontend Uploader settings. By default the site admin will receive email notifications. If you’d like to change that to another email, you can also change that in settings.

How are authors determined?

If someone is logged in, their user profile is automatically linked to the post. Otherwise, you can enable an “Author Field” under Settings > Frontend Uploader that allows the users to write in their name.

Are other filetypes supported?

In addition to the WordPress whitelisted file types, Frontend Uploader also supports uploading of Microsoft Office and Adobe files, as well as various video and audio files. You can enable these file types via Settings > Frontend Uploader Settings.

Where does the user submitted content go?

If you used the default form, the uploaded file will go into Media > Manage UGC. You can have the submitted content go into Post > Manage UGC by setting the parameter: form_layout="post".

Help, I pasted in the above shortcode and now my fields are duplicated

As stated in previous answer, you don't need to put inner contents if you only need default form fields. E.g. [fu-upload-form class="your-class" title="Upload your media"] will be enough to render the default form. You can suppress rendering of default form fields with "Suppress default fields" checkbox in settings

I want to customize my form

You can include additional elements with a set of shortcodes [input type="text" name="post_title" id="title" class="required" description="Title" multiple=""] [select name="foo" class="select" id="ug_select" description="Pick a fruit" values="Apple,Banana,Cherry"] [textarea name="post_content" class="textarea" id="ug_caption" description="Description (optional)"] [checkboxes name="foo" class="checkboxes" description="Pick a fruit" values="value:Description,124:Banana,cherry:Cherry"]

I want to be allow users to upload mp3, psd, or any other file restricted by default.

You are able to do that within Frontend Uploader Settings admin page. The settings there cover the most popular extensions/MIME-types. The trick is that the same file might have several different mime-types based on setup of server/client. If you're experiencing any issues, you can set WP_DEBUG to true in your wp-config.php or put

add_filter( 'fu_is_debug', '__return_true' );

in your theme's functions.php to see what MIME-types you are having troubles with.

FileExt is a good place to find MIME-types for specific file extension.

Let's say we want to be able to upload 3gp media files.

First we look up all MIME-types for 3gp: http://filext.com/file-extension/3gp

Now that we have all possible MIME-types for .3gp, we can allow the files to be uploaded.

Following code whitelists 3gp files, if it makes sense to you, you can modify it for other extensions/mime-types. If it confuses you, please don't hesitate to post on support forum. Put this in your theme's functions.php

add_filter( 'fu_allowed_mime_types', 'my_fu_allowed_mime_types' );
function my_fu_allowed_mime_types( $mime_types ) {
    // Array of 3gp mime types
    // From http://filext.com (there might be more)
    $mimes = array( 'audio/3gpp', 'video/3gpp' );
    // Iterate through all mime types and add this specific mime to allow it
    foreach( $mimes as $mime ) {
        // Preserve the mime_type
        $orig_mime = $mime;
        // Leave only alphanumeric characters (needed for unique array key)
        preg_replace("/[^0-9a-zA-Z ]/", "", $mime );
        // Workaround for unique array keys
        // If you-re going to modify it for your files
        // Don't forget to change extension in array key
        // E.g. $mime_types['pdf|pdf_' . $mime ] = $orig_mime
        $mime_types['3gp|3gp_' . $mime ] = $orig_mime;
    return $mime_types;

There's no captcha!

The plugin uses Akismet as spam protection (you have to have Akismet installed and configured). Just enable Akismet support in the plugin's settings and voila.

Configuration Filters


By default Frontend Uploader could be managed with 'edit_posts' capability, if you want to change permissions, this is the right filter

add_filter( 'fu_manage_permissions', create_function( '$cap', 'return "edit_others_posts"; ) );


Allows you to add your custom MIME-types. Please note that there might be multiple MIME types per file extension.

add_filter( 'fu_allowed_mime_types', 'my_fu_allowed_mime_types' );
function my_fu_allowed_mime_types( $mime_types ) {
    $mp3_mimes = array( 'audio/mpeg', 'audio/x-mpeg', 'audio/mp3', 'audio/x-mp3', 'audio/mpeg3', 'audio/x-mpeg3', 'audio/mpg', 'audio/x-mpg', 'audio/x-mpegaudio' );
    foreach( $mp3_mimes as $mp3_mime ) {
        $mime = $mp3_mime;
        preg_replace("/[^0-9a-zA-Z ]/", "", $mp3_mime );
        $mime_types['mp3|mp3_' . $mp3_mime ] = $mime;
    return $mime_types;


add_action( 'fu_after_upload', 'my_fu_after_upload', 10, 3 );

function my_fu_after_upload( $attachment_ids, $success, $post_id ) {
    // do something with freshly uploaded files
    // This happens on POST request, so $_POST will also be available for you


Allows you to add additional HTML to form

add_action('fu_additional_html', 'my_fu_additional_html' );

function my_fu_additional_html() {
<input type="hidden" name="my_custom_param" value="something" />


If you're experiencing issues with upload it might be due to server misconfiguration, enabling debug mode will give you more detailed error messages

add_filter( 'fu_is_debug', '__return_true' );


This action runs after form was uploaded. Arguments are: (string) $layout (form layout), (array) $result - result of the upload.

add_action('fu_upload_result', 'my_fu_upload_result', 10, 2 );

function my_fu_upload_result( $layout, $result ) {
    // do something

Requires: 4.1 or higher
Compatible up to: 4.6.2
Last Updated: 6 months ago
Active Installs: 8,000+


4.3 out of 5 stars


0 of 14 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.

100,2,2 100,1,1
100,2,2 100,1,1
100,2,2 67,3,2 100,2,2 67,3,2 100,1,1 100,2,2
100,1,1 50,2,1 50,2,1
100,1,1 100,1,1
100,1,1 100,3,3 100,1,1
100,1,1 0,1,0 0,1,0