I am going to be blunt and say the only reason children "will only eat" certain foods is because they are allowed and enabled to do so. (with the exception obviously of children who have specific medical conditions etc).
And I speak as someone who, as a child, would eat only dry breakfast cereal and whose mother pandered to this because she felt she would rather I ate that than nothing at all. In my defence, I had (and still have) massive issues with textures of certain foods, but I think that if I hadn't been pandered to on that level I would have been less of a fussy eater as a result (even though I was the child who would rather go hungry than eat something I didn't like).
Op - you need to tackle this now because the longer you allow it to continue the harder it is going to be to actually deal with.
Firstly though you need to get an idea of what it is your child is actually eating. Because in truth we often over-estimate how much our children should eat in comparison to the size of their stomachs.
So, for the first seven days I would change nothing. However, I would draw up a chart with breakfast, lunch, dinner and snack times, and note down everything he eats at each mealtime, including drinks, because this will give you an indication not only of the volume of food your ds is eating, but also the variety, and will give you a better understanding of just where it is he's eating too much and what he's not eating enough of. It's something that's hard to keep on top of on a day-by-day basis, but a week-long chart will give you the bigger picture.
Also from the chart you can make a note of what foods he likes from each particular meal, so that you can include some of these in the next stage.
After you've done your chart it's time to get tough..
Firstly you need to cut out the foods that are being used purely to supplement his eating. so no crisps, sweets, biscuits and especially no yoghurts.
The first meal I would work on is breakfast. Breakfast is the most important meal and is the one that will start your ds' metabolism. So, you already know that he eats cereal and toast (did you say?) so I would offer that for breakfast. There's nothing wrong with cereal and toast for breakfast, at this point it is actually important that he starts the day with a decent meal otherwise it's a downhill spiral from there. So let him have his cereal/toast, offer fruit if you think he'll eat it, but if not then don't worry about it. Equally let him have fruit juice if he wants some, but again, if not don't worry.
For snack I would offer fruit and nothing more. Grapes/apple slices/dried fruit/whatever fruit he'll eat. If he turns it away just say "well you're obviously not hungry," and remove it without comment.
What does he usually eat for lunch? If a main meal then I would serve elements you know that he'll eat i.e. some carrot/pasta/sweetcorn, along with some things you know he is less likely to eat - meat/other veg he won't touch, but only introduce one or two things to his plate and one or two he does eat. In the beginning give him more of the stuff he will eat and less of the stuff he won't, but as the week progresses gradulally switch this so he is getting more of what he would normally refuse so that he has no choice but to try things if he doesn't want to go hungry.
If he doesn't eat the food don't turn it into a battle - just remove the plate without comment, but don't offer any alternatives - he will learn that if he doesn't fill up on lunch then there will be nothing more forthcoming. If he tries the new foods then talk to him about them, tell him how good it is to try new things/give asticker if need be. If he says he doesn't like the new foods persiveer - a child needs to be introduced to a flavour up to twenty times before they will develop a taste for it, so be aware that it takes time.
Again at snack time offer fruit and nothing more.
And repeat the same senario at dinner time - new flavours/textures, with emphasis on him eating the food but no comment if not. And no pudding - especially no yoghurt. 
If he won't eat meat then you can make allowances. I know lots of children that won't eat meat and often it's because they don't like to have to chew it. My ds is similar although he's got better as he's got older. So compromise - make bolognese/shepherds pie for dinners, even soups with meat in them - nothing more delicious than dipping bread into soup and getting the nutricion that way.
Also roast dinner can be cut up quite small without having to puree it, and if your ds doesn't like roast potatoes there's nothing wrong with mashed potatoes with gravy.
It's not going to happen overnight, and you're probably in for a rough few weeks/months, but if you persiveer he will gradually develop new tastes/textures and lose the dependence on yoghurts.
Once your ds is eating better I would perhaps reintroduce yoghurts as snacks but not as food substitutes, and only one at a time. but in the meantime I would cut them out altogether.
good luck.