What I do might sound a bit mean, but it just replicates what would happen in a dog pack (I know Yorkies don't naturally live in packs!

)
If she doesn't eat her food within about 10 minutes I remove the food, and she doesn't get any more until her next meal, this lets her know that food will be coming regularly but that she needs to eat it straight away. I don't like doing this, I feel really horrible, but it didn't seem to bother her and worked within a day or so.
I can't leave the food around for her all the time as my other dog would eat it anyway, so either way if she doesn't eat it - it disappears. She has a great appetite now and eats as much as my border terrier
I hope your puppy is eating properly soon, as long as he is developing well and putting weight on that is the main thing, but it might be worth getting your vet to check him if not.
cheers