First of all -- Welcome to the Horse Forum.
Really simple fix. Teach him that "Whoa!" mean whoa. Then, when you finally get him to stand like his feet are nailed down, always stand still for 10 seconds or more and never let him walk off until you squeeze your legs and ask him to. I usually either back a horse up, turn it sharply to the right or flex its head a time or two without letting its feet move and THEN ask one walk forward.
I teach "Whoa!" by facing the horse, saying the word and jerking the lead-rope when he moves. I can teach almost any horse in 10 or 15 minutes. I prefer to do this out in the open away from any barrier or obstacle. I don't want a crutch -- I want obedience.
One does not have to jerk most horses very hard. Any small jerk on the lead-rope is irritating and the total relief that come from me NOT jerking the rope is the only reward he needs.
After the horse learns that Whoa means whoa when I am facing it, I start moving all around the horse, still expecting it to stand perfectly still. I do not allow a single foot to move. I want a horse to let me brush his tail, pick up his feet, groom him all over, throw a saddle on him, etc, without moving a foot that I do not ask him to move.
Then, when he is saddled and ready to mount, he more than likely will stand. If he doesn't, I step back, say the magic word and jerk that lead-rope. Then, I place a foot in the stirrup again. I just repeat this until he decides he must stand still when I say "Whoa!". Of course, I have already taught him to stand still at any other time.
I want him to stand even if he gets poked in the ribs. I want him to stand if an inept wanna-be rider wants to mount. I want him to stand out in the pasture a mile from home or out on the trail. I want him to stand if his rider needs a mounting step, tree stump, a fence or a trailer fender to get on. It is just part of having a 'broke horse' with good manners -- an important part.
Now, if a person is always jerking and pulling around on a horse in a meaningless way, a jerk on the lead-rope is not going to mean much. For anything to work, a handler or rider needs to be 100% consistent. "Whoa!" cannot mean 'slow down' or 'do nothing' part of the time and mean 'stand perfectly still' the next.
Again -- remember -- the worst behavior you accept at any time is the best behavior you have any right to expect.