How to automate the WordPress Guest Posting Process

Ever wonder how to convert your WordPress blog into a more automated posting process? One that can accept guest posts, job listings or even a forum-type of blog? Where users can submit a post, save it into your drafts section and all you have to do is approve or deny? The beauty of the open source community is that someone, somewhere had already thought about doing this, and have already developed a solution. With a combination of several plugins and some custom styling, here is how I was able to automate the guest post submission process here in my blog:
First thing you have to do is check the “Anyone can Register” option under “Settings” > “General”. Don’t forget to leave the “New User Default Role” as “Subscriber”.

Lock Down the Registration Process

Now that you have your site open for registration, it is best that you install these plugins first to enable tighter security:
Secure WP – as many options that this plugin comes with to enhance security, what I especially need it for is to disable the error messages at login (which this plugin does very well)
SABRE – stands for “Simple Anti Bot Registration Engine”. This produces that image during registration to block “autobots”.
Limit Login Attempts – the plugin title says it all. Activate this plugin and tweak depending how tight you want login attempts. Note that you’re not going to see any error messages due to the Secure WP plugin.

Hide the WP Admin Panel

So registration is open, security is tight – you still don’t want users to see your WordPress admin area. Not that there’s anything wrong with that – but it just looks more sophisticated when all is done in the front end. Install the following plugins:
Theme My Login – this plugin will generate a page called “Login” – this is where your new login forms (includes new registration and forgot password) will sit. Additional options also include custom emails, redirection and moderation. *Make sure you check “Enable Template Tag” under “Optimization” – You’ll need this in your theme later.

Theme My Profile – plugin created by the same author, which ports the users “profile” page into the front end. Make sure you theme and block admin area ONLY for roles you want.
The following screenshots show the login page, as well as the profile page generated by the plugins that I’ve mentioned:

TDO Mini Forms

We’ve come to the meat of the project. This is the plugin that does all the magic. TDO Mini Forms allows users (registered on not registered) to submit and edit posts to your blog. It comes with its form creator that lets you design the post submission form any way you want. Widgets that let you drag and drop components into your form, as well as a form “hacker” that allows even deeper code tweaking. What I especially liked is that it hooks up with your “Akismet” for spam protection.

After specifying all the configuration settings with TDO, go ahead and create a form with “Form Creator”. The form creator is a somewhat decent drag and drop interface where you grab the widgets in the bottom and drag it to the form. Widget settings are applied by clicking on the settings tab and it brings up the settings window as shown below:

Once you’ve decided on the fields and the settings, you can now alter the code to change the verbiage, along with adding HTML elements in order to be able to style it in your stylesheet. Below shows my contribute form:

On a side note, I know developers are always looking for freelance work. I discovered Braintrust: a user-owned talent platform created by and for the world's top talent. Head over to Braintrust and signup today!
Maybe some Custom Code

Depending on your pages – you might need to add some PHP conditional tags and functions to the theme manually. This is to link the new pages to each other. Simply copy your theme’s page.php file and rename it to something.php – convert it into a template by adding the code on top of the page:

Now below the call for the content, add the conditional tag with from the Theme My Login plugin:

The screenshot below shows the custom link to the contribute form that we just created:

All you have to do now is to wait for guest post submissions and depending on the content – simply approve, edit or deny. The submissions are saved as draft posts and are in the moderation view of TDO mini forms:


Now that you have converted your blog into a more automated (and sophisticated) posting process – think of all the possible scenarios you can create. Of course I’m completely aware that my guest posts will not land any successful submissions any time soon – it’s just good to know that it’s available. Not to mention, it was fun to make.

affiliate link arrowdigitalocean banner


  1. This is neat – but a question: When someone guest post (in my case, they will add their business information) – and I publish the post… can they go in later and update/edit that post?
    Best case, they can update for the better… mild case, they post bad or defamatory information… worst case, someone gets their ‘not-so-secure’ password and posts redirects or other bad things…

  2. Thanks for this post! It started me on the right track, but I got a problem and was wondering if anyone can help me.
    I want to be able to setup a custom field so that an unregistered user can fill in their name and that will be the name of the author of the post.
    I have searched everywhere… found this post ( asked on there and my comment was moderated and removed 🙁 I couldn’t figure out how he did it, even with his instructions.
    He just mentioned to put in (post_author) but I had no idea where or how to do it!
    How can I solve this issue. I want to promote someone being able to submit a guest post and have their author name (and email too) just like comments but for a post that I can moderate.
    Plz help! 🙂

    • Hi Opzzzz,
      an unregistered user will not use the wp user details, therefore you need custom fields. set up the fields first in wordpress – then hook these fields up in the tdo form creator (drag “custom field” from the widgets section). Be sure to allow “unregistered users” to submit entries. I suggest to play around with tdo mini forms extensively to see how much you can do.

  3. Great Article, i have one question. Can i use the form to submit events. Does TDO form have any calendar integration with it.It will be great if they do have it or custom set up for it. any ideas anyone. thank you

  4. Hey very nice Post
    And thanx.. for sharing with us.
    I have tried this on my blog but due to some error in Plugin “theme-my-profile.php” on line 367, I m not able to access my blog now.
    Plz help me wat to do now.
    I will visit again to check ur Reply.
    Plz Reply, Don’t del this comment.

  5. Hi Michael,
    I put on my site the theme Kubrick on crack and when I set 5 posts per page in the second page gets a blank area and if you set the settings to maximum six posts ,the area in blank is on the first page.
    Rj – Brazil

  6. Thanks for the tips, I finally able to use the TDOMF. There’s one question though, when I test to use the form, how come after I click “send” button, the message such as “thank you for your submission…etc..etc..” doesn’t pop up? instead it just goes back to a blank form. I want to at least let the guest know it has been submitted. Please help, not sure if I’m doing anything wrong here. Thanks

  7. I want my user to upload images and embed Youtube videos in there post. Presently I have Smart tube plugin. Using that only admin can embed youtube videos.

  8. i would like to do this on my site, but im hosted on a site and i dont have the very first option you mentioned on my settings (which are .org options). Is there any other way to this on a site?

  9. Wow thanks Michael, very cool. We are opening up guest posting for our site and this looks like a great option, I’m just a little hesitant with the amount of extra plugins required and the potential conflicts as our list is already quite large

  10. Hey, I’m following your guide to make guest posting easier on my website but the TDO Mini Forms WordPress Plugin doesn’t exists anymore. Is there any other plugin that can be used?


Leave a Comment.