Pseudocode:
WFI
check what to do, + do it
WFI again
Expressed as loop:
while(1)
{
WFI
check what to do, + do it
}
Expressed differently
AGAIN:
WFI
check what to do, + do it
goto AGAIN;
Not difficult.
Yes that's how it should usually be done.
Then it doesn't matter whether WFI returns immediately or not.
Using it *merely* to wait on some interrupt while being guaranteed to do nothing until said interrupt happens is IMO a misuse of WFI.
The whole benefit is that it usually puts the CPU in a low-power mode. If you don't need low-power, a simple busy loop would do the trick just fine.
Calling WFI in a "busy loop", as shown above, is (again, usually) the right compromise.
Of course, if you have one interrupt source that potentially wakes up the CPU too often (which could counterbalance the benefit of the low power achieved with WFI), and this interrupt doesn't interest you as a wake-up source, you may want to disable it before. It all depends on the use case really, but it's often not a good idea and the simple wait loop is much simpler and much safer.
If the goal is to put the CPU into some sleep mode and have it woken up only from a given wake-up event, many MCU do have other means of achieving this, some waking up only from a given wake-up event, configurable and independent from interrupts, so that both can be handled separately, and you don't need to constantly mess with interrupts enabling and disabling.