custom fields become unavailable after a period of time
Ultimately, the answer was simply to enable &quot;CiviCRM: access all custom data&quot; for all users in Administer-&gt;Users &amp; Permissions-&gt;Permissions-&gt;WordPress Access Control.
I am unclear whether this presents a data risk. The wording of the permission makes it feel a bit like this, but I guess if a user only has limited access by context then it isn't an issue. I am fervently hoping this is so.
The reason it appeared to work at first was related to browser and server caching. As soon as the caches cleared it failed.