I hate to be honest, but good luck doing freelance work.
The field is so big, that you'll find yourself competing with guys that have a massive portfolio, 10+ years of knowledge, and are willing to do the job for peanuts.
Oh god, those guys you can at least compete with; far worse are, as hybrid_ham points out, the guys in India who will do your job for 1/10th of your price. And, of course, not many clients care the code will be unmaintable mess they will need to completely redo five months down the line...
At this point I would recommend staying far away from PHP. The cons of the language and the community far outweigh the supposed benefits of the platform (free and easy to learn) when the same can be said of Node.JS, Ruby, Python, and even C# with ASP.NET.
I gotta agree with this; after working with both PHP and ASPX, I definitely prefer the latter. But still, WordPress and cheaper hosting is a good enough reason to stick to it.
SEO is what people will pay the most for but they are not going to help you maintain it. Clients don't want to create content but they want to be number 1 in searches.
Yeep, which is what I have been transitioning to for several clients after completing the initial website. But I am smart enough to always clarify its an extra (usually hourly) service, not something I will be willingly do in my free time for them
they will expect to hand you a 3 page pdf document and for you to make their site magnificent at the end of 3 days.
Ugh, try the opposite, I got like 50+ page documents or hundreds of photos they expect me to read and pick relevant content. It wouldn't be half bad if it wasn't for the fact that they always, ALWAYS hate the photos you pick, yet will never tell you which photo they want, so it ends up being like this ridiculous back-and-forth goose chase until you randomly pick one they finally accept.
And don't even get me started on the completely abstract and useless feedback you get half the time....
Small businesses especially have extremely unrealistic ideas about a website,
*sigh* sad but true. The worst is the "feature creep" when they just keep adding extra requests and stuffs because "oh implementing that interactive form will only taek you like 5 minutes right?" I've learned to make very concrete specifications/estimates from that.
When something is wrong on the website - the users never give you any details. It's broken is all they can tell you.
Hahaha, oh god THIS. So many times I've heard "xyz is broken" without any idea what "broken" means. And half the time they never reply to your email asking for clarification/details so you have to end up chasing them on their phones (not that they pick up or return calls any more frequently)
That being said, once you do find the good clients who, even if ignorant of technology, are willing to work WITH you, and learn what makes your job easier, the job isn't bad at all, and can be quite fun! Hold on to those for the dear life, cause they don't come often.