Duplicate Form Fields Are Making WordPress Hang — Here’s What’s Happening

Directories & Niche Publishing

You go to load the listing form, or save a listing, and WordPress just… stops. The spinner turns. The page hangs. Eventually you get a timeout, or a white screen, or the little “this page isn't working” shrug from your browser.

Nine times out of ten on a directory, the culprit is the same: you've got the same custom field defined twice.

Here's the thing about a directory listing form — it isn't one form, it's a pile of fields the platform assembles every time the form loads. Title, category, phone, hours, that custom “STEM accreditation” field you added last spring. Each one gets registered, rendered, and saved. And the system assumes each field has one definition. When two definitions claim the same field — same meta key, same name — the form doesn't gently pick one. It tries to honor both, and depending on the platform that turns into the same work being done twice on every load, or a loop where the form keeps trying to resolve a conflict that can't be resolved. That's your hang. PHP runs until it hits its time limit and gives up.

How you end up with duplicates in the first place:

  • A field got added twice — once through the plugin's field manager and once by hand (or by a snippet someone pasted in), both pointing at the same key.
  • A migration or import duplicated the field definitions. Move a site, restore a backup, or import settings, and field definitions can come in on top of the ones already there.
  • Two plugins are both registering the same field. Your directory plugin and an add-on (or the theme) both think they own “phone,” and they're quietly fighting over it.
  • A custom-fields plugin and the directory's own fields collide on the same meta key.

The fix is to find the duplicate and remove the copy — but which copy matters, because one of them probably has your real settings and the other is the empty twin. So before you delete anything: find every place that field is defined. Check the platform's field manager, check for snippets in your theme's functions file or a code-snippets plugin, and check whether an add-on registers it too. Identify which definition is the real one, keep that, remove the duplicate at its source — not just on the screen, but wherever it's actually being registered.

A word of caution: bumping up your PHP time limit will sometimes make the hang “go away” by letting the doubled work finish before timing out. That's not a fix. That's turning up the volume so you stop hearing the smoke alarm. The field is still defined twice; you've just given the loop more room to run. Find the duplicate.

If you've gone looking and you can't find where the second definition is hiding — they're sneaky when a snippet or an add-on is doing it — that hunt is the kind of thread I'm happy to pull. But start with the field manager. The twin is usually sitting right there.