So why do you think your child needs to gain weight? Every person has a body frame and metabolism that is more genetics than anything. Unless your doctor said your son is anemic I wouldn't fret about gaining weight.
You know what trying to make your child eat more does...it creates an over-eater. I'm perfect proof. I was 19 lbs in kindergarten. I weighed 54 lbs in seventh grade. I graduated from highschool at 97 lbs. My mother would force me to clean my plate because doctors said I was too small. I started eating entire pizza's by myself as a teenager trying to gain weight because people made fun of me.
At 25 or 26 I noticed that I finally started to put on weight. For one maybe two glorious years I was actually happy with my weight. I was a perfect size 7. It was amazing, but then the weight kept coming.
Over the last 15 or so years I've struggled. I am now 30 lbs over weight. My biggest problem is I'm always hungry and normal servings do not satisfy me.
Don't force your child to eat. And cut out all the snacks. He doesn't need them...unless you are offering him a piece of fruit, a slice of cheese (like from a cheddar block) or a whole wheat cracker or two...then forget the snacks.
Stick to the really healthy meals maybe four times a day. One to two glasses (that's about 4 oz for a small child) of whole milk a day, one glass of 100% fruit juice, maybe some liquid yogurt and then lots of water.
If he eats two bites and then is full then so be it. But don't let him have snacks that will ruin his appetite for the good stuff.
My second child is 4 years old and she weighs 27 lbs. She's perfectly healthy. She eats small meals. An egg with a piece of sausage or a cup of oatmeal or a cup of grits with a slice of cheese melted in it. She eats one pancake with one sausage. She will eat a 6 oz yogurt with half a banana for breakfast.
If I let her have anything more than maybe a small slice of cheese off a cheddar block or two or three crackers or a small handful of pretzels even two hours before her next meal...she won't eat but a bite or two.
And I can not give her anything sweet like a cookie or even a hershey kiss within an hour of a meal or it totally ruins her appetite. Super sugar items totally wreck her appetite for an hour or more depending on how much she ate.
In addition, there are studies now that show you develop most of your fat cells around the toddler years. If you are trying to fatten him up, you could be literally FATTENING him up.
If his blood work has come back normal. If he has plenty of energy to play then just concentrate on feeding him healthy meals four times a day.
Lots of fruits and veggies with good portions of protiens for brain development.
Stay away from things out of a box or package. Things that have sugar added. Things out of a can because of the high salt content.
To counter the picky eater phase...give him a variety at every meal. Put the item that you want him to try on his plate first. Tell him that if he eats one bite then he can have a serving of the item he really likes. Make it a rule now that he has to try at least one bite of everything on his plate regardless of whether he's tried it 5 times before.
My girls are 4 and 6....they are kinda finicky. They know the rules are though that they have to eat one bite of everything on their plate. They are both now eating baked potatoes when neither of them would eat potatoes of any kind until recently. My youngest now likes sweet potatoes. I bet she's tried them a dozen times before and didn't like them. When little they would only eat scrambled eggs, but now they will eat all kinds of eggs.
Like I said I always put something on the plate new and made them eat it. then I would give them a serving of what they really liked. But not until they tried the new item. Now they know they have to try everything.