You'll get biased responses here, as most people are self taught in pretty much everything they do.
There are plenty of self taught programmers out there. I was originally self-taught, then did a year of comp sci at university before dropping out (to pursue a business opportunity -- I had angel investors interested, and committing myself to the company 100% was a requirement for them investing in the company).
The key with learning to code is to avoid the common pitfalls. Learn how to code properly, and study the math behind it like you would on a CS degree (propositional/predicate logic, set theory, vectors, induction, number theory, graph theory, state machines, probability in particular).
Don't just go out and code for a few years, or you'll develop tons of bad habits that will limit your potential and need "resetting". Find structure, and work on projects between some more formal learning (e.g. studying the math, teaching yourself the common patterns, algorithms, etc). There's lots of "coders" out there, but very few are much good (whether they are self taught or went to university).
Stuff like codeacademy are good for learning specific languages, contributing to opensource projects is a great way to learn too. Try to learn at least 1 procedural (e.g. C), 1 object oriented ("most" languages you'll hear about, e.g. java/c++/php etc) and 1 functional language (e.g. haskell), to roundly develop your coding skills, too. There's languages like Python that include elements of all of types too, which can give a good grounding too.
I'd avoid starting with PHP as a first language, as although it's very useful from a web perspective, it encourages tons of bad habits.
Of course, all my advice hinges on you wanting to develop a career around programming. If you want to hack apart a wordpress site, make some minor changes and build simple dynamic websites, just learn basic PHP and stop there.