Most RTOS implementations for architectures that support it already place WFI in the idle loop by default if no background work or user hooks are processed there - I don't think FreeRTOS is any different. The system will wake-up on any interrupt including the RTOS systick so there is nothing further to do to support low-power operation - if it is not in the idle loop, then it is doing work and not able to enter low-power.
For further power reduction, some RTOS support a tick-less mode where the RTOS systick interrupt period is variable and set to the longest active remaining timeout or delay and then the tick-counter is corrected on start-up based on the number of ticks actually spent asleep. It can still wake-up on other interrupts of course.
Tick-less operation is beneficial on systems with relatively large interrupt and timing intervals (compared to the RTOS tick rate). If you do work on every tick, it serves little purpose, because it will wake-up to do that in any case.
FreeRTOS supports tick-less operation on ARM Cortex-M using configUSE_TICKLESS_IDLE
as described at Low Power RTOS For ARM Cortex-M MCUs.