Each player on your team has a contract which includes their expected playing time. If you have a second baseman who is consistently not playing, but his contract says that he is an everyday player, he will definitely be unhappy. On the other hand, some players have a contract in which they agreed to be bench players, so their happiness will not be affected.
You'll see what I mean if you check the contract section of the "player info" tab when viewing your team's rosters.