The answer for WireGuard and Openvpn is different. That is, because NetworkManager implements Openvpn as a NetworkManager VPN plugin, while WireGuard is implemented by the daemon directly (natively).
NetworkManager has two mechanisms to automatically connect a profile. One is connection.autoconnect setting and one is connection.secondaries where a secondary profile gets activated when the primary one activated. Currently, native types (like WireGuard, Ethernet and Wi-Fi) only support connection.autoconnet, while VPN plugins currently only implement to be started as secondaries. The reason for that difference is that it's a missing feature.
When the system goes to sleep, NetworkManager disconnects devices first. When returning from sleep, it starts autoconnecting the suitable profiles and devices.
From the question it's not clear why these two mechanisms wouldn't just work. Did your u configure the profiles accordingly, to be autoconnected? What happens on resume? As always, when you want to exactly understand what a daemon does, enable debug logging and check the logs.
You can also write a script to activate a profile, if the automatism that is provided doesn't suit you. But that seems not necessary (without first understanding why it doesn't work automatically).