How to Enable User Submitted Posts and Guest Blogging with Ninja Forms
Your readers have stories to tell, and you’d love to publish them. But how do user submitted posts get onto your site without you creating a WordPress account for every guest writer, handing over a login, and hoping for the best? Nobody wants strangers poking around the dashboard.
So the stories arrive by email instead, and guess who’s reformatting a Word doc at 11pm? Open things up and you picture spam going live before you’ve even seen it. And if contributors want to send a photo, do they get the keys to your whole media library?
It sounds like a lot. It’s one form. Below, we’ll build a form that turns every submission into a real WordPress post, holds it for your approval, and never asks your contributors to log in to anything.
What you’ll need
- Ninja Forms (free)
- The Front-End Posting add-on (standalone, or included with the Elite membership)
- Optional: the File Uploads add-on for contributor photos (standalone, or included with memberships)
How do user submitted posts work in WordPress?
The Front-End Posting add-on gives Ninja Forms a Create Post action. Add it to any form, point the form’s fields at the post’s title and content, and every submission becomes a real WordPress post. Set the action’s Post Status to Pending Review and nothing is published until you approve it, all without giving your contributors a login.
Here’s the whole thing in four steps:
- Build a form with a title field and a story field.
- Add the Create Post action and map those fields to Post Title and Post Content.
- Set Post Status to Pending Review, and pick who gets credited as the author.
- Put the form on a page, then approve new posts from your Posts screen like any other draft.
It works the same whether you’re a small business blog collecting customer stories, a school taking student writing, or a nonprofit sharing member spotlights. We built ours for Capybara Hot Springs, a travel blog that invites visitors to send in their own soak stories. You’ll see that form in the screenshots below.
Build the form your contributors will fill out
A guest post form needs two things at minimum: somewhere to type a title and somewhere to type the story. Everything else is there to make your life easier when it’s time to review. Here’s the set we used.
- Go to Ninja Forms > Add New and choose Blank Form.
- On the Form Fields tab, click the blue (+) icon to open the Fields window.
- Add a Single Line Text field labeled Your Name and an Email field. Switch Required Field on for both.
- Add a second Single Line Text field for the post title. Label it Story Title and make it required.
- Add a Paragraph Text field for the post itself. Label it Your Story and make it required.
- Add another Paragraph Text field for the excerpt. Label it Short Summary and leave it optional.
- Click the Your Story field to open its field settings window, expand the Display settings accordion, and switch on Show Rich Text Editor.
That last toggle is worth the ten seconds. Your contributors get a toolbar for bold, italics, lists, and links, and their paragraphs arrive in the post as real paragraphs instead of one long block.
Worried people won’t want to hand over an email address? Use the Email field’s Description setting, in the same Display settings accordion, to say it’s only for follow-up and won’t be published.
One more thing while you’re in there: leave Show Media Upload Button off. On a public form, photos are a job for an upload field, and that’s the very next section.
Want a photo with each post? Add one upload field (optional add-on)
With the File Uploads add-on, a contributor can attach a photo and you can make it the post’s featured image. There’s one catch to know before you build the field. Only upload fields limited to a single file can be used as a featured image, so set that limit now and save yourself the backtracking.
- Open the Fields window again and add a File Upload field. Label it Featured Photo.
- Click the field to open its field settings window, and expand the File Upload field’s Restrictions settings accordion.
- Set File Limit to 1.
- In Allowed File Types, enter
jpg, jpeg, png.
Leave Save to Server switched on, which is how the field arrives. No photos on your blog? Skip the field entirely, because nothing else in this article depends on it.
Here’s our finished Capybara Hot Springs form, the way a visitor sees it:
Turn every submission into a post with the Create Post action
The Create Post action is where a form submission becomes a WordPress post. You tell it what kind of content to create and which form fields hold the title and the body. It’s six short steps, and you won’t type a single merge tag by hand.
- Click the Emails & Actions tab.
- Click the blue (+) icon to open the Actions window.
- Click the Create Post tile. The action’s settings window opens.
- Set Post Type to Posts.
- In Post Title, click the merge tag icon at the right edge of the setting and choose your Story Title field.
- In Post Content, do the same and choose your Your Story field.
Don’t see a Create Post tile? Check that the add-on is active. In your Plugins list it has “Post Creation” in its name, not Front-End Posting, so it’s easy to scroll right past.
The Post Type list is longer than you’d expect, because it shows every content type WordPress knows about. Ignore oddities like Navigation Menus. Posts is the one you want, and Pages or your own custom post type are in the same list if you need them later.
See the extra line in our Post Content? You can type around a merge tag. We typed “A guest story by” and added the Your Name merge tag above the story, so every post opens with a byline.
Nothing goes live until you say so: set Post Status and Post Author
Post Status is your moderation control, and it has four options: Draft, Pending Review, Private, and Published. Choose Pending Review. The post is created and saved, stays invisible to the public, and waits in your Posts screen until somebody on your team approves it.
Our opinion? On a form anyone can reach, Published is asking for trouble, because whatever gets submitted goes live on the spot. Save it for a form only trusted, logged-in people can use.
Post Author needs a decision before you touch it. Its first option, Themselves, credits the post to whoever is logged in when they submit. A visitor who isn’t logged in has no account to credit, so the post shows up with no author at all.
The fix is easy. Create a WordPress user called Guest Contributor under Users, give it the Author role, and credit guest posts to that user.
- In the Create Post action’s settings window, expand the Advanced settings accordion. This is inside the action, not the Advanced tab at the top of the builder.
- Set Post Author to your Guest Contributor user.
- Set Post Status to Pending Review.
- In Post Excerpt, insert the merge tag for your Short Summary field.
- In Featured Image, choose your Featured Photo field. This setting only appears when File Uploads is active.
The photo becomes the post’s featured image, and it’s added to your media library for you. Your contributor never sees the library.
Tempted to drop the photo’s merge tag into Post Content instead? That gets you a text link to the file, not a picture. While you’re here, you can leave Post Format on Standard, and skip Custom Meta unless you already know you need custom fields.
File every guest post under its own category
The Create Post action can put every submission in a category you choose, so guest content never mixes with your own posts by accident. The action only lists categories that already exist, so make the category first.
- In your WordPress dashboard, go to Posts > Categories and add a category, such as Guest Stories.
- Back in the Create Post action, expand the Terms and Taxonomies accordion.
- Under Categories, switch on the toggle for your new category.
Every submitted post is now filed under that category, and only that one. There’s also a Term Field Mapping dropdown in the same accordion if you’d rather let contributors pick a category themselves. We’d keep it simple and pick for them.
Get a heads-up when a story arrives, then approve it like any other post
A post waiting in Pending Review does you no good if nobody knows it’s there. Two small touches close the loop: an email to you, and a message to your contributor.
- On the Emails & Actions tab, open the form’s Admin Email action, or add an Email action if your form doesn’t have one.
- In Subject, type “New guest story waiting for review:” and insert the Story Title merge tag.
- Open the Success Message action and tell contributors their story will be reviewed before it’s published.
- Keep the Record Submission action switched on, so the contributor’s name and email are saved with every entry.
- Click Publish, then add the form to a page the way you would any other form.
Now fill it out yourself, logged out, the way a stranger would. Your test post lands under Posts in the WordPress dashboard, in the Pending filter. Open it, tidy it up if it needs it, and click Publish.
If the email never shows up, walk through the email troubleshooting steps before a real contributor finds out for you.
What about spam? Every Ninja Forms form has a honeypot running without you switching anything on, and you can add more free spam protection on top. Pending Review is still your safety net, because junk that slips through sits in a queue only you can see.
That’s all there is to it. You now accept user submitted posts, and nobody needed a password.
Give Ninja Forms a try today!
Ninja Forms is free! Optional premium features available with any membership.
Accepting guest blog posts on your WordPress site? Credit your writers by name
An open “share your story” form and a guest blogging program want slightly different things. A guest writer who pitches you an article usually expects their own byline, and you probably know who they are before they submit a blog post. That’s where the Themselves option from the section above earns its spot.
Here’s the setup for WordPress guest blogging with named authors:
- Give each writer an account. Create it yourself under Users, or build a registration form so writers sign up on their own.
- Make the form members-only. Click the builder’s Advanced tab, click into Restrictions, and switch on Logged In.
- Set Post Author to Themselves. The post is credited to the writer’s own account.
- Keep Pending Review on. Even a writer you trust deserves an editor.
Yes, that means logins, and it’s a trade. Your writers still don’t have to find their way around the WordPress editor. They fill out a form on the front end of your site, and you do the rest.
Whichever way you go, tell people what you’re looking for right on the page above the form: topics, length, whether you edit. It saves you from rejecting posts that never had a chance.
Open the door to your contributors today
Like we said at the top, user submitted posts only sound scary because of the logins, the spam, and the photos. If you’ve walked through the sections above, all three are handled. Contributors fill out a form, every post waits for your approval, and a photo comes along without anyone touching your media library.
Don’t hand out logins for a job a form can do. Pick up the Front-End Posting add-on, on its own or included with the Elite membership, and go find out what your readers have to say!
Try Ninja Forms Today
Always free, with premium features available through our memberships.
I’m planing to let my customers fill out multiple forms with thoughts and specs on their own product (i.e. a new webdesign), and I would like their submission to be available on my site for future reference.
Is it possible, with Ninja Forms and this extension, to restrict the submitted form only to the user who submits it?
Danny,
You wouldn’t be able to restrict who submits a form for a specific product by user at this time (we do have a User Registration extension in active development). However, you can control whether new submissions are published immediately or held pending your review, meaning you could approve future submissions only for the owner of the product.
Hope I read your question right. Had a bit of a time visualizing exactly what you were asking!
Cheers,
Quay
Can you give me a hint where i find informations about frontend editing of this user submitted content (e.g. users can edit their own content or content of a specific usergroup)? Thank you.
Mike,
Right now you can only allow users to submit posts to the front end, but not edit. We had a Front End Editing extension for our old codebase, but it was such a Frankenstein’s monster of an extension that we are reworking it into more manageable single extensions. That functionality is in the works, but not here yet.
Cheers,
Quay
You read it right! Thanks!
So, I need to manually assign the created post to the submitting user? Is there a way to do this automatically?
Hi can i have multiple upload fields, one for video, one for audio and one for images?
Sure can!
This looks great, thank you. A couple of questions:
1) You mention post meta – if I create a custom post type and then use ACF to apply fields, will this all be available to the front-end form?
2) Will this only work with posts? For example, if I were to use a plugin that enables me to add events, how might this also be exposed to the front-end post form?
Thanks!
I want my users to be able to see their submissions. How do I do that?
Really need a way to allow users to edit their submissions. We were using the deprecated Front End Editor which allowed this, but the new Front End Posting add-on does not. Where can I find information to allow editing of submissions? I cannot seem to even find a hook or anything in your Codex. We really need to get converted over to v3 because the old version is very insecure and this feature is a must for our application.
I completely agree with Mitch. A front end editor would make life so much easier than having users email me asking me to manually edit their posts for them. It would free up so much time. Also, making it so the individual user can only edit their own post would be fantastic – the icing on the cake!
I agree. Front end editing is a must.
What about ADVANCE CUSTOM FIELDS and hooking to NinaForms? No reply on the question above.
Can a NinjaForm be created so that a user input content and that content flows its data into an Advance Custom Field?
Wishing to have the Front End Posting (already doing well on our site) but have two Advance Custom Fields so that those fields can be put into a template that displays a POST LIST and the ACF can show up outside of the data for the overall post text.
Hi Mark, please check with our support team who can look at specific fields you’re working with and assist. You can get support at https://ninjaforms.com/account/support/
Is it possible to use a radio button question to generate categories in a post? Eg- the user can select what categories the post falls under. Thanks!
Hello Michalina,
Our Front-End Posting add-on gives you the ability to create a user-selected Terms List by default. To enable it, open the Terms and Taxonomies dropdown, and choose the “Terms List.” Otherwise, you can add category options manullay to a user-selected Radio field, then map the options to their corresponding Create a Post action using Conditional Logic. This method takes a little extra work and an extra add-on but it can be done. For further assistance, please reach out to our Customer Success team: https://ninjaforms.com/contact/.