Title: User Submitted Posts – Enable Users to Submit Posts from the Front End
Author: Jeff Starr
Published: <strong>February 21, 2011</strong>
Last modified: March 27, 2026

---

Search plugins

![](https://ps.w.org/user-submitted-posts/assets/banner-772x250.jpg?rev=1392443)

![](https://ps.w.org/user-submitted-posts/assets/icon-256x256.png?rev=2567685)

# User Submitted Posts – Enable Users to Submit Posts from the Front End

 By [Jeff Starr](https://profiles.wordpress.org/specialk/)

[Download](https://downloads.wordpress.org/plugin/user-submitted-posts.20260217.zip)

 * [Details](https://wordpress.org/plugins/user-submitted-posts/#description)
 * [Reviews](https://wordpress.org/plugins/user-submitted-posts/#reviews)
 *  [Installation](https://wordpress.org/plugins/user-submitted-posts/#installation)
 * [Development](https://wordpress.org/plugins/user-submitted-posts/#developers)

 [Support](https://wordpress.org/support/plugin/user-submitted-posts/)

## Description

**🏆 The #1 Plugin for user-generated content**

User Submitted Posts (USP) provides a front-end form that enables visitors to submit
posts and upload images. Just add the following shortcode to any Post, Page, or 
Widget:

[user-submitted-posts]

That’s all there is to it! Your site now can accept user generated content. Everything
is super easy to customize via Plugin Settings page.

> 🚀 Enable visitors to submit posts from the front end of your site

### ✨ Form Fields

The submission form may include any/all of the following fields:

 * Name
 * Email
 * URL
 * Post Title
 * Post Tags
 * Post Category
 * Post Content
 * Custom Field 1
 * Custom Field 2
 * Custom Checkbox
 * Challenge Question
 * Google reCAPTCHA (v2 or v3 Invisible)
 * Cloudflare Turnstile (Invisible)
 * Post Images
 * Agree to Terms

> 🚀 The first and best plugin for user-submitted content

### ✨ Core Features

 * Simple to set up and display the form anywhere on your site
 * Display the form on multiple posts and pages, or even site-wide
 * Redirect users to any URL or stay on current page after submitting posts
 * Set post status as draft, pending, publish, or publish after x number of posts
 * Option to receive email notifications for submitted posts
 * Customize email notifications with various post data
 * Include email links to edit and delete posts
 * Display a basic login/register/password form

> 🚀 Enable your visitors to share their own posts and images

### ✨ Form Features

 * Display form anywhere via shortcode or template tag
 * Display only the fields that you want on the form
 * Set each displayed form field to be required or optional
 * Automatic client-side form validation provided by [Parsley](https://parsleyjs.org/)
 * Stops spam via input validation, your choice of captcha, and hidden field
 * Choose Google reCAPTCHA, Cloudflare Turnstile, or Challenge Question
 * Choose Google reCAPTCHA v2 (“I am not a bot”) or v3 (Invisible)
 * Optionally require users to be logged in to use the form

> 🚀 Dial in the perfect form for your visitors

### ✨ More Features

 * Lightweight, fast, and secure
 * Translated into 20+ languages
 * Option to submit posts as WP Posts or Pages
 * Provides option to enable a custom form and styles
 * Customize success, error, and file upload messages
 * Includes shortcode to display a list of submitted posts
 * Includes shortcodes to control access and restrict content
 * Includes template tags to display submitted post content

> 🚀 Simple to use, lightweight, and flexible

### ✨ Image Uploads

 * Enable visitors to upload any number of images
 * Specify minimum and maximum number of allowed images
 * Specify minimum and maximum width and height for images
 * Automatically set submitted images as Featured Images
 * Automatically display submitted images on the front end
 * Includes template tags to display submitted images
 * Includes shortcodes to display submitted images
 * Form displays thumbnail previews of images

> 🚀 The easiest way to enable user content

### ✨ Pro Version

Pro version includes many powerful features, with unlimited custom forms, unlimited
form fields, multimedia file uploads, and much more. Pro features include:

 * Unlimited forms
 * Unlimited form fields
 * Unlimited file uploads
 * All field types, including textarea, checkboxes, radio, select, file(s), plus
   input types like text, password, url, search, email, month, time, color, date,
   range, number, and more
 * Build post-submission forms, user-registration forms, and contact forms
 * Build COMBO forms (e.g., forms that submit posts AND register users)
 * Supports unlimited Custom Post Types
 * Supports custom Taxonomy fields
 * Supports Custom Post Status
 * Supports Post Formats
 * Custom error messages
 * Custom redirects
 * Advanced security features
 * Advanced shortcode to display submitted posts on the front end
 * Plus everything the free version can do and more!

> 🚀 Visit Plugin Planet to [learn more and get USP Pro »](https://plugin-planet.com/usp-pro/)

### ✨ Translations

User Submitted Posts supports translation into any language. Current translations
include the following languages:

    ```
    Arabic                - usp-ar
    Bengali               - usp-bn_BD
    Chinese (Simplified)  - usp-zh_CN
    Chinese (Traditional) - usp-zh_TW
    Czech                 - usp-cs_CZ
    Dutch                 - usp-nl_NL
    French (France)       - usp-fr_FR
    German                - usp-de_DE
    Greek                 - usp-el
    Hebrew                - usp-he_IL
    Hindi                 - usp-hi_IN
    Irish                 - usp-ga
    Italian               - usp-it_IT
    Japanese              - usp-ja
    Korean                - usp-ko_KR
    Norwegian             - usp-no
    Panjabi               - usp-pa_IN
    Persian               - usp-fa_IR
    Polish                - usp-pl_PL
    Portuguese (Brazil)   - usp-pt_BR
    Portuguese (Portugal) - usp-pt_PT
    Romanian              - usp-ro_RO
    Russian               - usp-ru_RU
    Serbian               - usp-sr_RS
    Slovenian             - usp-sl_SI
    Spanish (Spain)       - usp-es_ES
    Swedish               - usp-sv_SE
    Turkish               - usp-tr_TR
    Urdu                  - usp-ur
    ```

**Note:** Most of the default translations are made via Google Translate. So they
are automated and may be a little rough. Feel free to make your own translation 
as desired. Need a translation into your language? [Let me know!](https://plugin-planet.com/support/#contact)

### ✨ Privacy

**User Data:** This plugin enables users to submit post content. It collects data
_only_ from users who voluntarily submit content via the USP form. The only involuntary
data that is collected is the IP address of the person submitting the form. The 
plugin provides an option to disable IP collection completely.

**Cookies:** This plugin uses simple cookies to enable dynamic form functionality.
No cookies are used for any other purpose.

**Services:** This plugin provides an option to enable Google reCaptcha, which is
provided by Google as a third-party service. For details on privacy and more, please
refer to official documentation for [Google reCaptcha](https://developers.google.com/recaptcha/).
This plugin also provides an option to enable Cloudflare Turnstile, which is provided
by Cloudflare as a third-party service. For details on privacy and more, please 
refer to official documentation for [Cloudflare Turnstile](https://www.cloudflare.com/application-services/products/turnstile/).
No other outside services or locations are accessed/used by this plugin.

### ✨ Developer

User Submitted Posts is developed and maintained by [Jeff Starr](https://x.com/perishable),
15-year [WordPress developer](https://plugin-planet.com/) and [book author](https://books.perishablepress.com/).

### ✨ Support Development

I develop and maintain this free plugin with love for the WordPress community. To
show support, you can [make a donation](https://monzillamedia.com/donate.html) or
purchase one of my books:

 * [The Tao of WordPress](https://wp-tao.com/)
 * [Digging into WordPress](https://digwp.com/)
 * [.htaccess made easy](https://htaccessbook.com/)
 * [WordPress Themes In Depth](https://wp-tao.com/wordpress-themes-book/)
 * [Wizard’s SQL Recipes for WordPress](https://books.perishablepress.com/downloads/wizards-collection-sql-recipes-wordpress/)

And/or purchase one of my premium WordPress plugins:

 * [BBQ Pro](https://plugin-planet.com/bbq-pro/) – Blazing fast WordPress firewall
 * [Blackhole Pro](https://plugin-planet.com/blackhole-pro/) – Automatically block
   bad bots
 * [Banhammer Pro](https://plugin-planet.com/banhammer-pro/) – Monitor traffic and
   ban the bad guys
 * [GA Google Analytics Pro](https://plugin-planet.com/ga-google-analytics-pro/)–
   Connect WordPress to Google Analytics
 * [Head Meta Pro](https://plugin-planet.com/head-meta-pro/) – Ultimate Meta Tags
   for WordPress
 * [Simple Ajax Chat Pro](https://plugin-planet.com/simple-ajax-chat-pro/) – Unlimited
   chat rooms
 * [USP Pro](https://plugin-planet.com/usp-pro/) – Unlimited front-end forms

Links, tweets and likes also appreciated. Thanks! 🙂

## Screenshots

 * [[
 * USP Settings Screen (panels toggled closed)
 * [[
 * USP Plugin Settings, showing default options (panels toggle open/closed)
 * [[
 * USP Form (with all fields enabled)
 * [[
 * USP Form (with just a few fields enabled)
 * [[
 * Example showing how to display the form on a Page (using a shortcode)

## Installation

### How to install the plugin

 1. Upload the plugin to your blog and activate
 2. Configure your options via the plugin settings
 3. Display the form via shortcode or template tag

[More info on installing WP plugins](https://wordpress.org/documentation/article/manage-plugins/#installing-plugins-1)

### Display the form

To display the form on any WP Post, Page, or widget, add the shortcode:

    ```
    [user-submitted-posts]
    ```

Or, to display the form anywhere in your theme, add the template tag:

    ```
    <?php if (function_exists('user_submitted_posts')) user_submitted_posts(); ?>
    ```

**Important:** When copy/pasting the shortcode, **use the plain-text editor** or
block. Using the Visual/RTE Editor may introduce unwanted artifacts when copy/pasting
from a web page. Specifically, if you copy the above shortcode and paste it directly
into a visual editor or block, the shortcode may be wrapped in code tags. And when
the shortcode is wrapped in code tags, the form will display very poorly on the 
front end.

### Customize the form

There are three main ways to customize the form:

 * Visit the plugin settings to show/hide fields, configure options, etc.
 * Enable the custom form template (check out “Custom Submission Form” below)
 * Developers can use [action and filter hooks](https://developer.wordpress.org/apis/hooks/)

### Custom Submission Form

Out of the box, User Submitted Posts provides a highly configurable submission form.
Visit the plugin settings to control which fields are displayed, configure options,
and so forth.

There are cases however, where advanced form configuration may be required. In order
to allow for this, USP makes it possible to create a custom submission form. Here
are the steps:

First, copy these two plugin files:

    ```
    /user-submitted-posts/resources/usp.css
    /user-submitted-posts/views/submission-form.php
    ```

Then, paste those two files into a directory named `/usp/` in your theme:

    ```
    /wp-content/themes/your-theme/usp/usp.css
    /wp-content/themes/your-theme/usp/submission-form.php
    ```

Lastly, visit the plugin settings and set the “Form style” option to “Custom Form
+ CSS”.

You can now customize the two files as desired. The files will not be overwritten
when the plugin is updated. For help with making basic changes to the custom form,
check out the [USP FAQs](https://perishablepress.com/faqs-user-submitted-posts/#customize-form)
at Perishable Press.

Alternately, you can set the option “Form style” to “HTML5 Form + Disable CSS” to
use the default USP form along with your own CSS. FYI: here is a list of [USP CSS selectors](https://m0n.co/e).

Or, to go further with unlimited custom forms, [check out USP Pro](https://plugin-planet.com/usp-pro/).
USP Pro provides a form builder within the WP Admin Area, where you can add any 
fields, labels, text, and so forth.

### Display submitted posts

User-submitted posts are handled by WordPress as regular WP Posts. So they are displayed
along with your other posts according to your theme design.

### Display custom fields

To display submitted custom fields, visit the plugin settings and configure the “
Auto-Display” options.

Also, here is a [Helper Plugin to display Custom Fields](https://plugin-planet.com/usp-pro-custom-field-helper-plugin/).
It is designed for use with the Pro version, but also works great with the free 
version.

For more flexibility, you can use a variety of WP Template Tags (e.g., [get_post_meta()](https://developer.wordpress.org/reference/functions/get_post_meta/))
to display custom fields.

### Display submitted images

To display submitted images, visit the plugin settings and configure the “Auto-Display”
options.

### Display a Featured Image

To display a Featured Image (aka Post Thumbnail) for each submitted post, visit 
the plugin settings > Image Uploads > Featured Image.

### Shortcodes

User Submitted Posts provides a set of useful shortcodes. Check out the “Display
the Form” panel in the plugin settings for examples and quick information.

    ```
    [user-submitted-posts]                        : displays the form on any Post or Page
    [usp-login-form]                              : displays a login/register/password form
    [usp_display_posts]                           : displays list of all submitted posts
    [usp_gallery]                                 : displays a gallery of all submitted images for the current post
    [usp-reset-button url="https://example.com/"] : displays a button to reset the form
    [usp_access cap="read" deny=""][/usp_access]  : limits access to specific user capability
    [usp_visitor deny=""][/usp_visitor]           : limits access to visitors (not logged in) only
    [usp_member deny=""][/usp_member]             : limits access to logged-in users
    ```

Here is more information about these shortcodes:

**`[user-submitted-posts]`**

Displays the post-submit form. This shortcode does not accept any attributes.

**`[usp-login-form]`**

Displays the login/register/password form. This shortcode does not accept any attributes.

To add Google reCaptcha to the form, you can use a free reCaptcha plugin, for example:

 * [reCaptcha by BestWebSoft](https://wordpress.org/plugins/google-captcha/)
 * [Advanced Google reCAPTCHA](https://wordpress.org/plugins/advanced-google-recaptcha/)

**`[usp_display_posts]`**

Displays a list of all submitted posts. This shortcode accepts two optional attributes,“
userid” and “numposts”. Examples:

    ```
    [usp_display_posts]                           : default displays all submitted posts by all authors
    [usp_display_posts userid="current"]          : displays all submitted posts by current logged-in user
    [usp_display_posts userid="1"]                : displays all submitted posts by registered user with ID = 1
    [usp_display_posts userid="Pat Smith"]        : displays all submitted posts by author name "Pat Smith"
    [usp_display_posts userid="all"]              : displays all submitted posts by all users/authors
    [usp_display_posts userid="all" numposts="5"] : limit to 5 posts from all users
    [usp_display_posts post_type="page"]          : display only submitted pages
    ```

The shortcode attributes can be used to customize the post list as desired. Note
that the Pro version of USP provides many more options for the [display-posts shortcode](https://plugin-planet.com/usp-pro-display-list-submitted-posts/).

**`[usp_gallery]`**

**Note:** This shortcode works only when added to a submitted post. It does nothing
when added anywhere else.

Displays a gallery of all submitted images for the current post. Customize via the
following attributes:

    ```
    size    = image size as thumbnail, medium, large or full -> default = thumbnail
    format  = whether to make the image a linked image       -> default = image (can use image or image_link)
    target  = whether to open linked image in new tab        -> default = blank (can use blank or self)
    class   = optional custom class name(s)                  -> default = none
    number  = the number of images to display for each post  -> default = 100
    post_id = an optional post ID to use                     -> default = false (uses global/current post)

    Check out the source code inline notes for more info
    ```

**`[usp-reset-button]`**

Displays a button to reset the form. Accepts the following attributes:

    ```
    class  = classes for the parent element (optional, default: none)
    value  = link text (optional, default: "Reset form")
    url    = the URL where your form is displayed (required, default: none)
    custom = any attributes or custom code for the link element (optional, default: none)
    ```

Note that the `url` attribute accepts `%%current%%` for the current URL (useful 
when the form is displayed in the sidebar).

**`[usp_access]`**

Limits access to specific user capability. Example:

    ```
    [usp_access cap="read"]
        Content for users that have "read" access
    [/usp_access]
    ```

The `cap` attribute specifies the required capability or capabilities (comma-separated).
This shortcode also accepts an optional `deny` attribute. The `deny` attribute displays
a message to users who are denied access. Tip: to include markup in the deny message,
you can use `{tag}` to display `<tag>`. Check out the “Display the Form” panel in
the plugin settings for examples and more info.

**`[usp_visitor]`**

Limits access to visitors (not logged in) only. Example:

    ```
    [usp_visitor]
        Content for for users who are not logged in
    [/usp_visitor]
    ```

This shortcode accepts an optional `deny` attribute. The `deny` attribute displays
a message to users who are denied access. Tip: to include markup in the deny message,
you can use `{tag}` to display `<tag>`. Check out the “Display the Form” panel in
the plugin settings for examples and more info.

**`[usp_member]`**

Limits access to logged-in users. Example:

    ```
    [usp_member]
        Content for for users who are logged in
    [/usp_member]
    ```

This shortcode accepts an optional `deny` attribute. The `deny` attribute displays
a message to users who are denied access. Tip: to include markup in the deny message,
you can use `{tag}` to display `<tag>`. Check out the “Display the Form” panel in
the plugin settings for examples and more info.

### Template tags

User Submitted Posts provides a set of useful template tags:

    ```
    /*
        Display the Post-Submission Form
        Usage: <?php if (function_exists('user_submitted_posts')) user_submitted_posts(); ?>
    */

    user_submitted_posts()


    /*
        Display the Login/Register/Password Form
        Usage: <?php if (function_exists('usp_login_form')) usp_login_form(); ?>
    */

    usp_login_form()


    /*
        Display a configurable list of submitted posts
        Usage: <?php if (function_exists('usp_display_posts')) echo usp_display_posts(array('userid' => 'all', 'numposts' => -1)); ?>
    */

    usp_display_posts()


    /* 
        Check if post is a submitted post
        Returns true or false
        Usage: <?php if (usp_is_public_submission()) return true; ?>
    */

    usp_is_public_submission()


    /* 
        Get all image URLs
        Returns an array of image URLs that are attached to the current submitted post
        Usage: <?php $images = usp_get_post_images(); foreach ($images as $image) echo $image; ?>
    */

    usp_get_post_images()


    /* 
        Display all images
        Outputs a set of <img> tags for images attached to the current submitted post
        Usage: <?php usp_post_attachments($size, $beforeUrl, $afterUrl, $numberImages, $postId); ?>
        Parameters:
            $size         = image size: thumbnail, medium, large or full -> default = full
            $beforeUrl    = text/markup displayed before each image URL  -> default = <img src="
            $afterUrl     = text/markup displayed after each image URL   -> default = " />
            $numberImages = number of images to display for each post    -> default = false (display all)
            $postId       = an optional post ID to use                   -> default = uses global post
    */

    usp_post_attachments()


    /* 
        Display submitted author name and URL
        This tag displays one of the following:
            - The author's submitted name as a link (if both 'User Name' and 'User URL' fields are included in the form)
            - The author's submitted name as plain text (if 'User Name' is included in the form, but 'User URL' is not included)
            - The author's registered username as a link to the author's post archive (if 'User Name' is not included in the form)

        Usage: <?php usp_author_link(); ?>
    */

    usp_author_link()


    /*
        Get an array of image URLs, wrapped in optional HTML
        Syntax: <?php if (function_exists('usp_get_images')) $images = usp_get_images($size, $format, $target, $class, $number, $post_id); ?>
        Usage:  <?php if (function_exists('usp_get_images')) $images = usp_get_images(); foreach ($images as $image) echo $image; ?>
        Parameters:
                $size    = image size as thumbnail, medium, large or full -> default = thumbnail
                $format  = whether to make the image a linked image       -> default = image (can use image or image_link)
                $target  = whether to open linked image in new tab        -> default = blank (can use blank or self)
                $class   = optional custom class name(s)                  -> default = none
                $number  = the number of images to display for each post  -> default = 100
                $post_id = an optional post ID to use                     -> default = false (uses global/current post)

        Check out the source code inline notes for more info
    */

    usp_get_images()
    ```

These template tags should work out of the box when included in your theme template
file(s). Keep in mind that for some of the tags to work, there must be some existing
submitted posts and/or images available.

The source code for these tags is located in `/library/template-tags.php` and `shortcode-
login.php`.

### Content Restriction

USP provides three “Access Control” shortcodes to control access and restrict content.
Here are some examples to give you an idea of how it works.

Display form and/or content only to users with a specific capability:

    ```
    [usp_access cap="read" deny="Message for users without read capability"]
        [user-submitted-posts] // Put the USP form or any other content here.
    [/usp_access]
    ```

Display form and/or any content to logged-in users:

    ```
    [usp_member deny="Message for users who are not logged in"]
        [user-submitted-posts] // Put the USP form or any other content here.
    [/usp_member]
    ```

Display form and/or any content to visitors only:

    ```
    [usp_visitor deny="Message for users who are logged in"]
        [user-submitted-posts] // Put the USP form or any other content here.
    [/usp_visitor]
    ```

You can add and use Access Control shortcodes on any WP Post or Page. Tip: you can
find this information (and more) in the plugin settings > Display the Form > Access
Control.

### Upgrades

Visit the WordPress Plugins screen, locate the plugin, and click “Update” 🙂

### Restore Default Options

To restore default plugin options, either uninstall/reinstall the plugin, or visit
the plugin settings > Restore Default Options.

### Uninstalling

This plugin cleans up after itself. All plugin settings will be removed from the
WordPress database when the plugin is deleted via the WP Plugins screen.

**Note:** This plugin never deletes any posts. When the plugin is uninstalled/deleted
or options reset to default, only the plugin settings are removed. All submitted
posts and related meta data must be removed manually.

### Pro Version

USP Pro includes many more awesome features and settings, with unlimited custom 
forms, unlimited custom fields, multimedia file uploads, and much more.

 * [Learn more and get USP Pro »](https://plugin-planet.com/usp-pro/)
 * [Watch the Quick Start video »](https://plugin-planet.com/usp-pro-quick-start/)
 * [Read what users are saying »](https://plugin-planet.com/testimonials/#usp-pro)

### Like the plugin?

If you like USP, please take a moment to [give a 5-star rating](https://wordpress.org/support/plugin/user-submitted-posts/reviews/?rate=5#new-post).
It helps to keep development and support going strong. Thank you!

## FAQ

### Can you add this feature or that feature?

Please check the [Pro version of USP](https://plugin-planet.com/usp-pro/), which
includes many of the most commonly requested features from users. The free version
also may include new features in future updates.

### How to set submitted image as the featured image?

Here are the steps:

 1. Visit USP settings > Options panel > Image Uploads > Featured Image
 2. Check the box and click “Save Settings” to save your changes

Note that this setting merely assigns the submitted image as the Featured Image;
it’s up to your theme’s single.php file to include `the_post_thumbnail()` to display
the Featured Images. If your theme is not so equipped, [check out this tutorial at WP-Mix](https://wp-mix.com/set-attachment-featured-image/).

### How to require login?

To require login to use the form, visit the plugin settings and enable the option
to “Require User Login”. That will display the submission form only to logged-in
users.

For more fine-grained control, head on over to the [Installation tab](https://wordpress.org/plugins/user-submitted-posts/#installation)
and scroll down to the section on “Content Restriction”.

### How do I change the appearance of the submission form?

The easiest way to customize the form is via the plugin settings. There you can 
do things like show/hide specific fields, control the number and size of submitted
images, customize the Challenge Question, and so forth.

Also in the plugin settings, you can choose one of the following form configurations:

 * HTML5 Form + Default CSS (Recommended)
 * HTML5 Form + Disable CSS (Provide your own styles)
 * Custom Form + Custom CSS (Provide your own form template & styles)

To learn how to set up the Custom Form + Custom CSS, visit “Custom Submission Form”
under the [Installation tab](https://wordpress.org/plugins/user-submitted-posts/#installation).

For advanced customization, developers can use [USP action and filter hooks](https://perishablepress.com/action-filter-hooks-user-submitted-posts/).

To go further with unlimited custom forms, [check out USP Pro](https://plugin-planet.com/usp-pro/).
USP Pro provides a form builder within the WP Admin Area, where you can add any 
fields, labels, text, and so forth.

### Can I include video?

The free version of USP supports uploads of images only, but some hosted videos 
may be included in the submitted content by simply including the video URL on its
own line. Check out the [Embeds documentation](https://wordpress.org/documentation/article/embeds/)
for more info. Note that [USP Pro](https://plugin-planet.com/usp-pro/) enables users
to [upload video and other file types](https://plugin-planet.com/usp-pro-allowed-file-types/#file-formats)
supported by WordPress.

### How do I reset the plugin settings?

To reset plugin settings to factory defaults:

 1. Visit “Restore Default Options” in the plugin settings
 2. Check the box and save your changes
 3. Deactivate the plugin and then reactivate it
 4. Plugin settings now are restored to defaults

Restoring default settings does not delete any submitted posts. Even if you completely
remove the plugin, the submitted posts will not be deleted. You have to remove them
manually, if desired.

### Can you explain the setting “Registered Username”?

When “Registered Username” is enabled:

 * If the user is logged in, their registered username is used as the Post Author
 * If the user is logged out, the setting “Assigned Author” is used as the Post 
   Author

When “Registered Username” is disabled:

 * The setting “Assigned Author” always is used as the Post Author for all users(
   whether logged in or not)

### How can I translate this plugin?

Currently the easiest and most flexible method is to [use GlotPress to translate USP](https://translate.wordpress.org/projects/wp-plugins/user-submitted-posts).
That is the recommended translation route going forward, but for the time being 
you may also translate using a plugin such as [Loco Translate](https://wordpress.org/plugins/loco-translate/).
FYI, USP’s translation files are located in the `/languages/` directory.

### Why am I not receiving the Email Alerts?

Normally the plugin sends an Email Alert each time a post is submitted. If that 
is not happening in your case, you will need to troubleshoot your setup. Here is
a guide on [Troubleshooting Email](https://perishablepress.com/email-troubleshooting-guide/)
that should help.

### How to disable fancy category/tag select script?

USP uses the Chosen.js library to enhance the behavior and appearance of the Category
and Tag fields. The enhanced fields will be displayed when either/both of the following
are true:

 * The option “Multiple Categories” is enabled (for Category field)
 * The option “Use Existing Tags” is enabled (for Tag field)

If you want to disable the fancy Chosen script for these fields, you can do so by
adding the following code snippet to your WordPress site:

    ```
    <script>var usp_disable_chosen = true;</script>
    ```

Save changes and done. Also just FYI, here is a guide that explains [how to add custom code to WordPress](https://digwp.com/2022/02/custom-code-wordpress/).

### How to change the language for Google reCaptcha?

By default, the Google reCaptcha field is displayed in English. To change that to
some other language, first locate the two-digit abbreviation for your language [here](https://developers.google.com/recaptcha/docs/language).
Then add the following code to your theme (or child theme) functions.php, or add
via [custom plugin](https://digwp.com/2022/02/custom-code-wordpress/):

    ```
    function usp_recaptcha_querystring($query) { return 'en'; }
    add_filter('usp_recaptcha_querystring', 'usp_recaptcha_querystring');
    ```

Notice where it says `en`, that is the two-character language code you want to replace
with your own. Then save changes and done.

### Where can I check out a demo of the USP form?

There is a simplified [USP Demo](https://perishablepress.com/wp/wp-content/online/pages/user-submitted-posts-demo.html)
at Perishable Press. Note the demo form is non-functional, just there to give you
a general idea. The actual form provided by the plugin has more features, functionality,
etc.

### How to allow blank targets in post content?

By default, USP removes any `target="_blank"` attributes in submitted post content.
This is a recommended security feature. It is possible however to allow blank targets:

    ```
    function usp_content_patterns($array) { return array(); }
    add_filter('usp_content_patterns', 'usp_content_patterns');
    ```

That code can be added via theme (or child theme) functions.php, or add via [custom plugin](https://digwp.com/2022/02/custom-code-wordpress/).

### How to disable all HTML tags in submitted posts?

Add the code snippet provided [here](https://perishablepress.com/faqs-user-submitted-posts/#allowed-tags).

### mod_security is preventing saving changes?

If mod_security is installed on your server, it may prevent saving changes in the
plugin settings. For a further explanation and quick copy/paste code solution, check
out [this forum post](https://wordpress.org/support/topic/good-but-cannot-safe-any-changes/#post-18754005).
Thanks to [tomlandon](https://wordpress.org/support/users/tomlandon/) for sharing
the code solution.

### How do the edit-post and delete-post links work?

When `%%edit_link%%` is included in the Email Alert settings, a link will be included
in the email alert that takes capable users to the Edit Post screen for the submitted
post. Likewise when `%%delete_link%%` is included in the Email Alert settings, a
link will be included that enables capable users to delete the submitted post. Note
that these links work only for users who have sufficient capabilities (e.g., Editor,
Admin) AND are logged into WordPress when the link is clicked. For more details 
and tips, check out the [USP FAQs](https://perishablepress.com/faqs-user-submitted-posts/#delete-post-message)
at Perishable Press.

### Action and filter hooks

Here are some of the most commonly used [action and filter hooks](https://developer.wordpress.org/apis/hooks/)
provided by User Submitted Posts:

    ```
    Filters:
    usp_post_status
    usp_post_author
    usp_form_shortcode
    usp_mail_subject
    usp_mail_message
    usp_new_post
    usp_input_validate
    usp_require_login
    usp_default_title

    Actions:
    usp_submit_success
    usp_submit_error
    usp_insert_before
    usp_insert_after
    usp_files_before
    usp_files_after
    ```

For more, check out the [list of action hooks for User Submitted Posts](https://perishablepress.com/action-filter-hooks-user-submitted-posts/).
And of course, check the source code for even more. If you need a hook that is not
available, let me know via the contact form below.

### Custom Fields attached to submitted posts

Each submitted post attaches a variety of custom fields, including:

 * `is_submission` – indicates that the post is a user-submitted post
 * `user_submit_image` – the URL of the submitted image (one custom field per image)
 * `user_submit_ip` – the IP address of the submitted-post author
 * `user_submit_name` – the name of the submitted-post author
 * `user_submit_url` – the submitted URL
 * `usp_custom_field` – configurable Custom Field

For a more complete list, submit a test post and visit the “Edit Post” screen. There
you can toggle open the “Custom Fields” meta panel and view all attached custom 
fields.

### More FAQs

Want to read some more FAQs? Check out the [USP FAQs at Perishable Press](https://perishablepress.com/faqs-user-submitted-posts/)

### Questions? Feedback?

Send any questions or feedback via my [contact form](https://plugin-planet.com/support/#contact).
Thanks! 🙂

## Reviews

![](https://secure.gravatar.com/avatar/8a8776bc733acf2aa6d3d5cafb81c048dc3d85e81dbbe4c9113a1267bd12a9e3?
s=60&d=retro&r=g)

### 󠀁[Super!](https://wordpress.org/support/topic/super-3186/)󠁿

 [andreywesta](https://profiles.wordpress.org/andreywesta/) March 28, 2026

very very good! i recomended!

![](https://secure.gravatar.com/avatar/fba7111b7bc4cad4866e980d1b2dae46258320f7437bb976633c707e03bc6e17?
s=60&d=retro&r=g)

### 󠀁[Old User 72y](https://wordpress.org/support/topic/old-user-72y/)󠁿

 [monkeybralf](https://profiles.wordpress.org/monkeybralf/) March 26, 2026

Easy to use and helpful

![](https://secure.gravatar.com/avatar/8a537be58e7cbd5b9e949f6bbdba1dc0a4cc5f7401264578a8e74a14c916e3d0?
s=60&d=retro&r=g)

### 󠀁[Great plugin](https://wordpress.org/support/topic/great-plugin-41373/)󠁿

 [nmak](https://profiles.wordpress.org/nmak/) March 20, 2026

Great plugin works like a charm

![](https://secure.gravatar.com/avatar/58d2f1af5a2486ab02b09602072cea76cb93021f7dbf411264216e021b4f2952?
s=60&d=retro&r=g)

### 󠀁[Just what I needed](https://wordpress.org/support/topic/just-what-i-needed-1393/)󠁿

 [scomor74](https://profiles.wordpress.org/scomor74/) March 4, 2026

Great plugin for a WordPress newbie like me 🙂

![](https://secure.gravatar.com/avatar/2e8f4e35719a10fecd1d1ab35e5e14800b94e0f9b4ca5f004fc947e32437b731?
s=60&d=retro&r=g)

### 󠀁[Fabulous – It works](https://wordpress.org/support/topic/fabulous-it-works/)󠁿

 [rickjohns](https://profiles.wordpress.org/rickjohns/) February 10, 2026

Brilliant. It does what it says without any fussing or fiddling. Very easy to set
up and very easy for front end users to post. Well done.

![](https://secure.gravatar.com/avatar/3cc9c8db28f79bc65a4585b158da4a314cbb808069a0818de49977104edb97e7?
s=60&d=retro&r=g)

### 󠀁[Fantastic](https://wordpress.org/support/topic/fantastic-3471/)󠁿

 [Putra Matahari](https://profiles.wordpress.org/outboundpuncak/) December 17, 2025
1 reply

I’ve been using the User Submitted Posts plugin for a few months now, and I can’t
recommend it enough! As someone who runs a community-driven website, I needed an
easy way to let users contribute content without giving them full access to the 
backend. This plugin does exactly that, and more! The setup was super straightforward,
and I was able to customize the submission form to match the style of my site with
just a few clicks. The plugin also lets me control exactly what users can submit,
including categories, tags, and even custom fields, which is incredibly helpful 
for organizing content. One of the best features is how smoothly it integrates into
the front-end. Users can submit posts directly from the front end, and the submissions
are queued for review, so I have full control over what gets published. It’s perfect
for keeping the site organized while encouraging user engagement!

 [ Read all 909 reviews ](https://wordpress.org/support/plugin/user-submitted-posts/reviews/)

## Contributors & Developers

“User Submitted Posts – Enable Users to Submit Posts from the Front End” is open
source software. The following people have contributed to this plugin.

Contributors

 *   [ Jeff Starr ](https://profiles.wordpress.org/specialk/)

“User Submitted Posts – Enable Users to Submit Posts from the Front End” has been
translated into 2 locales. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/user-submitted-posts/contributors)
for their contributions.

[Translate “User Submitted Posts – Enable Users to Submit Posts from the Front End” into your language.](https://translate.wordpress.org/projects/wp-plugins/user-submitted-posts)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/user-submitted-posts/),
check out the [SVN repository](https://plugins.svn.wordpress.org/user-submitted-posts/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/user-submitted-posts/)
by [RSS](https://plugins.trac.wordpress.org/log/user-submitted-posts/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

_Thank you to everyone who shares feedback for User Submitted Posts!_

If you like USP, please take a moment to [give a 5-star rating](https://wordpress.org/support/plugin/user-submitted-posts/reviews/?rate=5#new-post).
It helps to keep development and support going strong. Thank you!

> 🚀 Unlock powerful features and build unlimited forms with [USP Pro »](https://plugin-planet.com/usp-pro/)

**20260217**

 * Further improves security for category field
 * Tests on WordPress 6.9 + 7.0 (nightly)

**20260207**

 * Adds `%%post_cats%%` to email alerts
 * Improves security for category field (Thanks [type5afe](https://x.com/type5afe))
 * Fixes bug with numbers in email alerts
 * Updates plugin settings page
 * Improves readme.txt documentation
 * Tests on PHP 8.4 and 8.5
 * Tests on WordPress 6.9 + 7.0 (nightly)

Full changelog @ [https://plugin-planet.com/wp/changelog/user-submitted-posts.txt](https://plugin-planet.com/wp/changelog/user-submitted-posts.txt)

## Meta

 *  Version **20260217**
 *  Last updated **1 week ago**
 *  Active installations **10,000+**
 *  WordPress version ** 4.7 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 5.6.20 or higher **
 *  Languages
 * [Arabic](https://ar.wordpress.org/plugins/user-submitted-posts/), [Danish](https://da.wordpress.org/plugins/user-submitted-posts/),
   and [English (US)](https://wordpress.org/plugins/user-submitted-posts/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/user-submitted-posts)
 * Tags
 * [frontend post](https://wordpress.org/plugins/tags/frontend-post/)[guest post](https://wordpress.org/plugins/tags/guest-post/)
   [public post](https://wordpress.org/plugins/tags/public-post/)[submit post](https://wordpress.org/plugins/tags/submit-post/)
 *  [Advanced View](https://wordpress.org/plugins/user-submitted-posts/advanced/)

## Ratings

 4.8 out of 5 stars.

 *  [  850 5-star reviews     ](https://wordpress.org/support/plugin/user-submitted-posts/reviews/?filter=5)
 *  [  22 4-star reviews     ](https://wordpress.org/support/plugin/user-submitted-posts/reviews/?filter=4)
 *  [  8 3-star reviews     ](https://wordpress.org/support/plugin/user-submitted-posts/reviews/?filter=3)
 *  [  5 2-star reviews     ](https://wordpress.org/support/plugin/user-submitted-posts/reviews/?filter=2)
 *  [  24 1-star reviews     ](https://wordpress.org/support/plugin/user-submitted-posts/reviews/?filter=1)

[Add my review](https://wordpress.org/support/plugin/user-submitted-posts/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/user-submitted-posts/reviews/)

## Contributors

 *   [ Jeff Starr ](https://profiles.wordpress.org/specialk/)

## Support

Issues resolved in last two months:

     1 out of 1

 [View support forum](https://wordpress.org/support/plugin/user-submitted-posts/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://monzillamedia.com/donate.html)