I’m not sure why, but for some reason you have to use include()
or require()
inside form()
, instead of include_once()
and require_once()
. I’m guessing that form() is being called multiple times, and so the external view file only gets included the first time. include_once()
and require_once()
will work fine inside widget()
, but it’s still better to use include()
and require()
in case the widget has multiple instances.