Question: So, I was tasked by client to help him convert his wp menu to javascript dropdown. I did on my development server. He did see the change and I was paid. I deliver the code he deploy it. But, no change on his server. So, I have to spent hours debugging it on his server. It turns out, his other plugin is not compatible with my change. That plugin is really custom. I have to change my code to make sure it's compatible with that plugin.

My question is, **is it fair for me to charge him for the hours I spent on debugging it AND actually fixing it?** or **is it still my responsibility, to make sure my code deployed properly?**

Answer: 
It kinda depends on the contract you had with him. If your agreement was that he would pay you by the hour then you would have more room to say you need to charge him more than if you made a bid on the project. If you made a bid on the project and he didn't provide you all the information (but it would still be true that you didn't research the setup properly) then you could potentially bill for the difference of what you did bid compared to the amount you would have bid if you had known all the details. Ethically I would say you have a responsibility to get the code working on his equipment/setup as that's what he was paying for. He wasn't paying for code he couldn't use. There are always times when things like this happen as it's easy to overlook things like this.
I could be convinced either way on this one; but if there's more work on the line, I'd probably just end up eating it. 

These are the precious life lessons that no amount of school can teach you. You're lucky that this one only cost you a couple of hours of your time :)