For homemade, I use the jugs and don’t put a hole - just leave the top off and then fill with hay pellets. Either give them the jug loose or hang from a rope and they figure out how to shake or nudge to get the pellets out. I save jugs from things like oil or even bleach and wash them out to use for this – they are heavier weight and last longer than the milk jug types.
For purchased toys, I was using the Nose-It treat dispensers and they work really well, but at $40 or so each, when I needed another one, I decided to try this Ball Feeder (only ~$15). While the cheaper one is not as heavy duty and probably won’t be as durable as the Nose-It, so far, it has been pretty successful around here. Living on a hill, these work well as they don’t roll too far away (I also have the Snak-a-ball and those end up rolling out of the paddocks too easily).
I had an Amazing Graze but found the hole too big for anything I was using as treats – they got small cookies and pellets out way too easily and fast. It is super durable and if it works for the type of thing you are feeding, it is worth trying. But for the small price, I’d try the $15 ball feeder first.