Why don't you give dinner at lunchtime a shot, and light lunch at dinner? He won't know 'oh this is all topsy turvy and I'm eating the wrong food at the wrong time'.
So if he likes yoghurt, give him yoghurt for dinner. That rules out a battle of the wills when he's tired, if he wants to eat yoghurt and you're telling him to eat yoghurt. You're making it easy for him to obey you.

Another thought I'm throwing in the mix is that if it's hot there like it is here, he might not be hungry either. Mine barely touched their dinner last night, even my 19 month old who usually finishes off his brother's dinner! I don't feel hungry either. So we do food in the cooler mornings (I'm cooking pancakes right now, actually, it's probably burning...................right, pancake saved), and so as they tire and the house heats up they've already eaten a decent amount. I don't insist on meat and 3 veg when I am so hot that all I want is a sausage in bread.
I've been filling them up with fruit filled smoothies too towards the end of the day.

Anyway. To me, sounds like it's tiredness, perhaps complicated further by the heat if it's hot where you are. So perhaps filling bub up earlier in the day is worth a shot. All the best.