Terms of Use WordPress Plugin

Instead of adding Terms and Conditions to the signup page, this plugin presents all users except admins with your terms and conditions the first time they login. The Admin menu is hidden until they accept your terms if the option to require agreement on ‘All Admin pages’ is selected. Existing users and those added in the admin will also need to agree to the Terms and Conditions on their next log in. After the terms are accepted, users are presented with a fully customizable welcome message to help them get started using WordPress.


  • Fully customizable Terms and Conditions, Privacy Policy and welcome message.
  • Integrates with Formidable for use in all types of forms
  • No changes need to be made to the Sign up process.
  • Existing users can agree to terms.
  • Users can view the terms at any time.
  • The date the user agreed is displayed on the profile page with a link to the terms.
  • Option to clear all agreement dates when the terms are changed so users will need to reaccept terms.
  • Option to show agreement date on profile.
  • Option to require user initials on agreement.
  • Option to require terms agreement on comment form in WordPress version 2.9 and above.
  • Shortcode [ terms-of-use ] (without spaces) for use in pages or posts for WordPress version 2.8 and above.
  • Select a front-end page to protect. If user is not logged in, a cookie will be set when terms are accepted.



  1. Upload `terms-of-use` folder to the `/wp-content/plugins/` directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Go to the ‘Settings’ menu and select ‘Terms of Use’ to customize settings.
  4. Select either ‘Show on Checked’ or ‘Hide on Checked’ from the drop-down and check the boxes.


Same as above except go to the ‘Site Admin’ menu and select ‘Terms of Use’ to customize settings.

Users can view the terms under the ‘Dashboard’ menu. If you change this setting, make sure the user groups that need to accept terms have access to the menu you place it under.

Download now


  1. says

    Hi Stephanie,

    Great plugin, thanks! I could really use this, but since we allow anonymous comments and don’t require/encourage visitors to registerer, I’d like to ask if you could extend this to the comment form as an extra (required) option and save their response (I love the initials idea!) to the database with their first comment. Ideally I’d love to have a backend search function for this, although I could run this manually through phpMyAdmin if you think this is overkill.

    In short:
    – Extra option below comment_form with checkbox “I have read the terms of use (linked, opens in new tab/window) and agree to them bla bla”;
    – Checkmark (YES) and initials are saved to the database, ideally together with their first comment;
    – Repeat visits by same customer show comment_form terms checkbox checked;
    – Search query in wp-admin for email address commenter when they have agreed to the terms (and name / IP);

    Hope you will incorporate such function in a later version. Please send me an email if you need any additional info. I’ll be more than happy to donate if you’ll add this :)

    • Steph says

      Those look like very doable requests. I didn’t think about adding terms to comment forms, but was planning on adding it the the sign up form anyway. There will also be a shortcode so the terms can be inserted in a page or post.

    • says

      I FINALLY got this added in version 1.11.0. It requires WordPress version 2.9. Hopefully you still need it, and are still willing to donate 😉

    • Steph says

      I’ll add that as on option in a later release, but for now just change ‘index.php’ on line 14 of ‘tou-config.php’. Just make sire to change it to a page the users have access to: tools.php, options-general.php, admin.php (if you’re not using WPMU, this works without showing the nav item, but users can see the page with the link on the profile page).
      If the link you choose doesn’t work, the user won’t get redirected to the terms page.

  2. Fedor says

    Hi, thanks for the plugin, this is really I was looking for. Unfortunately, it’s not suitable yet for my scenario, please let me know if following is something you can implement at some point (I think that it could be quite common thing). If not, please give me some hints where can I change the code.

    First thing is, as I understand, it works only for members at the moment, but I want to require all the registered users (including subscribers) to accept terms of use on login (so if you haven’t accepted, you’re not logged in). Reason is – there will be some content hidden from readers not logged in, and I want them to accept terms before viewing it.

    Another one: My blog is bilingual, I’m using great ZdMultiLang plugin for that. Would be great if terms of use could be localized in some way. As I see that, I would just create a separate page with terms that could be localized, all filters applied, linked from homepage etc. Maybe you can give me a hint so I can do this change by myself.


    • Fedor says

      Just to clarify: I don’t have any registration on the site, users can log in with any another identities like OpenID (RPX now plugin), so I can’t use any ‘agreement on registration’ plugins.
      Looks like the only way to resolve that would be to force new logged in user to ‘agree or log out’ page…

    • Steph says

      Everyone who logs into the admin area with a level less than 10 (administrator) is redirected to accept your terms. I’m not familiar with the plugin you’re using, so I don’t know if the redirection would be affected by it. Have you tried it out?

      As far as the bilingual option goes, that would be very good to add. There are still a few headings that are not editable, but that’s in the plans. That would be a good idea to add to option for multiple terms of use pages for each language. I’ll add that to my list.

    • Steph says

      Another clarification…. All users will be redirected to the terms agreement page as long as it is under a nav heading that they are allowed to see. So if you are disabling the Dashboard nav, users will not be taken to the terms page.

      • Fedor says

        Hi, just updated the plugin. Redirection is working fine, there’s different problem, here’s my scenario:

        0. There is content (blog posts, pages) that is only visible for logged in users.
        1. New user logs in with Google Id
        2. User is redirected to Google for authentication.
        3. User is redirecred back. WordPress shows Terms of Use page. Great.
        4. Uses ignores Terms of Use and opens blog homepage. ‘User-only’ content is shown! That’s because even if user can not do anything in dashboard, it’s already logged in. Where I’d like these posts to be hidden from user until it agrees with ToU.


        • Steph says

          There is a new option for protecting front-end content, but it will only require terms for one page. If the don’t accept terms, they are sent to the homepage. If they don’t agree in the back-end they are logged out. In your case, you could use the plugin as is, by selecting your front page to require term agreement. The problem is if the don’t agree, they will be sent right back to the terms page. Another problem is they can still easily bypass terms by typing in a different url.

  3. says

    Hey There,

    I haven’t actually tested this plugin yet however I just wanted to say thanks for letting us know at “the other” plugin site because if this works as stated you have saved me a ton of unecessary hassle.

    Good Stuff!

  4. says

    Wow! I love your Terms of Use plug-in!

    I downloaded it yesterday (10/6) and it was working fine. Then, today (10/7), I was notified of an upgrade through WP. I clicked “go”. ….and now I cannot login to the Dashboard area at all. It just flickers back and forth that it is trying to load the Terms of Use and then times out to a 500 Internal Server Error.

    Helllllpppp! Is there something I did wrong? Can I fix it??

    Thank you….

  5. Chris says

    Interesting plugin! I would love to use it, if the plugin could keep track of users by cookies. What I mean is this:

    When the users first reach my site, they will have to choose between two categories of interest. Let’s say film or books. This choice will be saved in a cookie and they don’t need to choose again.

    The next time they go to my site, depending on their choice (the cookie) they will be auto-redirected to either the start page for books or the start page for films.

    Can your plugin be customized to do this or is there another one perhaps?

    Many thanks!

    • says

      This doesn’t really sound like it’s even in the ball park of what this plugin does. I haven’t done any research into a plugin that would do what you want, but you may need to have it done custom. If you can’t find one I could write it for you for $150.

  6. MarkS says

    Because testing this on my site would cause confusion for members, I was wondering if the behavior I’m seeing would make sense for your TOU plugin. Great plugin by the way!

    I activated the TOU plugin but did not want it shown to members until I adapted the actual text of the terms. I chose (near the bottom of the plugin admin page) the option of NOT having the TOU shown when accessing ANY page. The Admin page was initially set (and that’s the page I’ll eventually use) but I didn’t select it. After the TOU plugin was activated and NOT assigned to any page, I had new users register. When the new users when to activate their account, they would get a message stating that an error had occurred. I deactivated 3 plugins. One of which was TOU. I’ll be able to test this soon but in the meantime I thought I’d ask if you’ve seen/heard of this behavior when TOU was activated but not assigned to appear prior to use of a page/ site area? Sorry if I missed this being discussed in your posts or comments.

    • MarkS says

      FYI- I will be testing this… just not right now… unless it’s confirmed that not selecting a section/page for the TOU to appear would cause an error on activation… thanks again!

    • says

      It looks like it may have been an issue in my plugin. I had a hook for WPMU that wasn’t getting called in my testing, and it had some bad code in it. It may have been getting called on your site. Please upgrade to 1.10.2 and let me know if you still have trouble. Thanks and sorry!

      • MarkS says

        Thanks for the feedback and the upgrade. No need to apologize, you’re awesome for all your work on this plugin. I’ll give it a try tomorrow.

  7. Ron says

    Hi, I work on WordPressMu and Buddypress 1.1.2 .

    I don’t understand this part (I speak French and I don’t find what I must do in these files):
    “but for now in order to move it, change ‘index.php’ on line 14 of tou-config.php to ‘tools.php’, ‘options-general.php’, or something else. Make sure the user groups that need to accept terms have access to the menu you place it under.”

    On the register page, I don’t know how can I add a case to accept the terms.

    Thank you for your help,


    • says

      That is actually referring to an older plugin version regarding the admin menu the terms menu lies under. There is now a drop-down option in the settings for selecting this page. By default, subscribers only have the Tools and Profile/Users menus. If the terms page is somewhere else, they won’t have permission to actually see the terms page. I need to update that in the read me too. Sorry for the confusion.

      • Ron says

        No problem!

        Do you know how can I add a case on the register page (of buddypress) because I want the users accept the terms before they register.

        Ps: Sorry for my language because I speak French.

      • says

        I’m trying to figure out why BuddyPress depreciated the hooks the regular WPMU registration page uses. You may want to check out Mingle to see if that will do what you need.

      • Ron says

        Thank you for your interest in my problem :)

        I don’t want to use Mingle because I made the design with buddypress.

        If you can find a solution I will be very glad.

        Thanks !

        :) :) :)

  8. says

    I cannot activate Terms of Use 1.11.1 on WP 2.9 because of error. Could you fix this?

    Parse error: parse error in C:wordpress.localwp-contentpluginsterms-of-use-2terms-of-use.php on line 239

    • says

      I haven’t been able to replicate this, but try version 1.11.2 ad let me know if it fixes the problem or not. If not, I may need access to your site in order to fix it.

      • says

        New version still does not work. I have analysed your code and found why it does not work – you are using short php tag in few places. Please set short_open_tag to Off in your php.ini file, and you will be able to reproduce this.

        Also please test your plugin with define(‘WP_DEBUG’, true); in your wp-config.php file – there are few php notices waiting for fixing :)

  9. says

    Hi Steph,

    I copied the complete folder “terms-of-use-2” into the “mu-plugin”-folder, but nothing happens. No configuration-menu is to bee seen. Any ideas?

    Cheers, gl

      • says

        Dear Steph,

        yes, this works, but unfortunately administrators of the single sites in a WPMU environment than have access to the plugin, which I don’t want. The only solution would be, to put the link to the T&C somewhere, where they don’t have access to. In my case, this would be the plugin-screen. Only the WPMU-admin has access to that screen. Further more, the T&C-plugin has to be activated for each single site. I know, there are tools available which do that, but …. Anyway, I can life with that.

        Thanks, gl

  10. says

    Hi Steph,

    what would be the best way to get a translation into German language? I could translate, but how to get the translation into your code so that it is still valid with your next update?

    Cheers, gl

    • says

      And it’s probably about time I get a POT file in there. I’ll get this into the next release. I’d love for you to add a translation file then.

      • says

        Hi Steph,

        Thanks for your quick reply.

        From my point of view you should NOT put the files with the long legal text in a pot-file. It probably makes more sense to translate this separately. But I leave the decision to you, as I am probably not that deep in the material as you are.

        I need your plugin urgently and would start translating rather today than tomorrow. I translated already (partly) the plugin “terms-and-conditions” of levi.putna, which unfortunately doesn’t work anymore with WPMU 2.8.6 (but worked fine in the mu-plugin-folder).

        Cheers, gl

  11. Luka says

    Dear Steph,
    Just a small question. I have a small ecommerce website. And I want my customers to agree to the terms of use before they check out. Is it possible to do with this plugin?
    Thank you for your time :)

  12. Alex says

    Hi Stephanie!

    Great plugin! Is there a way that administrator can see on each user profile the mention “Agreed to site Terms & Conditions on /dd/mm/yyy” that’d be great!!

    • Steph says

      I’ve added that into the next release, but here’s how to do it for now:
      1. add this line after line 96 of terms-of-use.php:
      add_action('edit_user_profile', 'tou_date', 200);
      2. On line 86, change $user_ID to $profileuser
      3. On line 87 add: $user_ID = $profileuser->ID;

      That should do it.

      • Alex says

        Cheers! That does the trick! However, it made me realise than people can comment without agreeing with those terms and conditions… I have a couple of users who did comment but nothing is showing regarding the agreement :S

        • Steph says

          Well, the problem here is that the agreement is saved to a cookie for comments. Take a look at the comments page, and the agreement will be listed there. If you are requiring user initials, those will show next to the user’s comment, otherwise it will just say ‘Agreed’ because the date is the same as the comment date. I need to update the comment agreement, so it will save to the database if the user is logged in. Consider it on my list.

  13. HR says

    is there any way to place the “agree to the Terms & Conditions” check box manually in the registration form because i using theme my profiles plugin and i set custom password field. so i when i checked Show and require term agreement on signup page
    take look at my screenshot here http://i47.tinypic.com/1179000.jpg
    im newbee if anyone know how to correct please let me know…


    • Steph says

      There’s not currently a way to add it manually, but try adding an order the fields are added. You can do this by changing line 143 of terms-of-use.php from add_action(‘register_form’, ‘tou_checkbox’);
      add_action(‘register_form’, ‘tou_checkbox’, 100);
      (You can try any number, just make sure it’s bigger than 10. By default, 10 is the order, so both the terms box and the password fields are probably defaulting to 10.)

      Let me know if that works for you. I’ll add a higher order into my plugin, so you won’t lose your changes on update.

      • HR says

        after removing the added number to default the “agree to the Terms & Conditions” check box did not comeback it disappear for ever i dont know what wrong let me try reinstall it

  14. HR says

    when i add the number 100 the “agree to the Terms & Conditions” check box disappear
    and i try adding different number still disappear . any other option

    thanks again

    • Steph says

      Make sure you have it written exactly like this:
      add_action(’register_form’, ‘tou_checkbox’, 100);
      The quotes must be around ‘register_form’ and ‘tou_checkbox’.
      There must be a comma after ‘tou_checkbox’ and before the 100.
      There must be a ; at the end of the line.

      • HR says

        okay thank you let me try it, on the other hand when using your plugin it make all my widget unmovable and cant edit sidebar widget ,dont know what wrong there might be conflict with the other plugin or something else, when deactiving your plugin the widget work fine again

  15. says

    Hi there, please can you help me.
    I’m trying to use your plug-in with a Wishlist Member plugin. http://wishlistproducts.com/

    The challenge I have it that they also re-direct the user after the login and registration, however, I can configure it to point to a specific page or URL. How do I determine the URL for the T&Cs?
    Thank you.
    Cheers, Andrew

    • Steph says

      Was just clearing out my inbox, and realized your question got missed. You may have already figured this out by now. What you need to do is set a front-end page to require the Terms agreement to access. It can be any page, but in your case it sounds like a welcome page would be good. Create a second page where you would like your terms to be accessible, and select this page in the admin settings as the “Terms Page”. You can then set the Wishlist redirect to the URL of the welcome page.
      Hopefully this is clear. If not, let me know and I’ll respond more quickly. Sorry about that!

  16. Alex says

    I have a feedback that might be useful..
    would it be possible to have a field showing if user agreement has been accepted when you browse the users’ list (and not the edit profile page)?

  17. Uwe says

    Hi Steph,

    first of all great PlugIn – thank you for !
    Is there a way to change the languange i.e. german ?

    • Steph says

      I still need to add a POT file for translations. I’m not sure how quickly this is going to happen though. This plugin is pretty low on my priority list at the moment. I’d like to completely rewrite it though.

  18. ppv says

    great plugin – using it on a Pay-Per-View video site for sports – I saw in the documentation that the admin should be able to see when users accepted the TOS – I currently have it set for the login page, but I don’t see in the Members Profile where they have accepted it?

    do I have it setup incorrectly?

    many many thanks!

    • Steph says

      If you’d like to see the date the users accept the terms, make sure you have the boxed checked to “Show date accepted in user profile.” Also, you will only see a date if the user was logged in when they accepted the terms. Otherwise, it’s saved to a cookie instead of the database.

  19. says

    Thank you so much for this. It saves TREMENDOUS time!
    There is a shortcode for the TOU. That is great. What about the Privacy Policy? I cannot find any note about a shortcode for that. I might could copy the portion of code for creating the TOU shortcode and edit it for the PP but that would be overwritten with the next upgrade. Could you add it to the next version?

  20. David says

    I would love to use this plugin on a deployment of BP 1.2 running on WP 2.9.2. Unfortunately, when you require acceptance of terms upon sign up, it breaks the registration form. Any ideas?

    • Steph says

      Unfortunately, BuddyPress is kinda lame and took out the normal hooks that the regular WPMU registration page uses. I’m not sure why it would cause an error though. Maybe you could temporarily add this to your wp-config.php and take a look at the page to see what it tells you:
      define(‘WP_DEBUG’, true);

  21. says

    I have added some text to the TOS, Privacy & Welcome blocks that seems to flow a bit better and add some info. In particular, I added info about non-human visitors that I got from the Project Honey Pot.
    I would like to provide the files to you for your consideration and possible use. Download the zip file at http://cdntoday.com/TOS.zip
    I would like to hear your comments. BTW, there is nothing “private” about the files so anyone else reading this is welcome to download and use them if they want. I will likely take them down in a few days however.

  22. Elliott says

    I have two questions concerning the plug-in (which is great BTW):

    1) Can you set it up so each time someone goes to the page with the Terms of Use disclaimer they have to accept? I guess it is storing a cookie or something that allows the person to only have to accept the first time they visit the page.

    2) I using WP as a CMS. I am aiming the plug-in at the page that acts as my blog (where posts are updated). The plug-in won’t seem to open up on these types of pages for me (I am using this plug-in on multiple sites).


  23. david says


    Is it possible to protect a page of blog posts that are rendered to another page? Specifically I am trying to add “TOU” to a page that accepts contents from another source and it doesn’t seem to be working. I saw the note about “shortcode” but not sure how to implement that or if it will even work. Please let me know.



  24. says

    Great plugin! I would be using it if it were compatible with buddypress. Any plans to make it compatible, or to create a buddypress ready version?

  25. says

    How can I change terms and conditons to memorandum and articles of association mostly used for not for profit making organisations membership.
    Thanks in advance.

  26. says

    Any way to make this plugin work for the stable release of Buddypress It seems to almost work… The issue comes when displaying the registration page…. The back-end stuff is all there and can bee seen and changed…

  27. says

    does this plugin allow the entire site to be “locked” from user until the “I accept” button is selected? right now, my client’s site can be accessed through the primary navigation even without selecting “I accept” on the T&C statement that I have on the Home page.