Share this:

Technorati ReddIt Favorites

Be careful naming FORM fields in WordPress

When you create a complex form that will be used on page or anywhere in WordPress, there are some restrictions that you will not found documented, and will cause you a lot of problems if you are not aware of them and how to solve them.

I am working on a project and a page with form, and form required a field for year of birth. Form I made was submitted using POST method. And I named the field for year of birth, simply: year. And I set the year field and submit the form, and instead form getting saved, I am redirected to 404 page. If I don’t set year field, everything is OK.

It took me some time to realize that WordPress is parsing the requests (even POST) and uses elements if they are recognized as rewrite elements. And year is one of the elements used to create rewrite rules. I renamed field to birth_year and everything was working fine. I didn’t had the time to test with older version of WordPress, but this problem is present in both WordPress 2.9 and WordPress 3.0.

This is a problem that can even be considered as bug, because parsing POST request for URL parameters is not needed. Only if the form is submitted as GET, these parameters can cause trouble.

So, to avoid problems with naming the form fields don’t use reserved keywords (even so they are not actually reserved, they might as well be) like:
year, monthnum, day, hourminutesecond, postname, post_id, pagename, category, tag, author, pagename and search.

Each of the field elements named using keywords in bold above, with value set will break the form and cause redirection problems, usually ending at 404 page.

Leave a Reply

Follow us on Twitter

Date Archives

Social Networks

Google Plus Profile Subscribe to RSS feed LinkedIn Profile Follow me on Pinterest Watch our Youtube Videos Find us on Flickr

Feedburner Feedburner updates

Sign up to receive news from this website to your email.

Recent Blog Posts

Dev4Press on YouTube

Share This

Technorati ReddIt Favorites