Yes it can be purchased in advance. You can get it as part of a package you book (Fairytale, Dream Maker, etc) or you can add it to a room only reservation no matter whether it is booked through CRO or WDTC.
If you aren't booking a package, you have the option of purchasing them at check-in (but no discount) where you will be able to drop the first and/or last day (in case you arrive late or depart early) and also not everyone would have to purchase them (in case you have an AP holder or PHP's). These are features that are not available if you advance purchase for the discount. ~~
Something about dropping a day.....the price for your full length of stay buying your pass in advance isn't much more than dropping a day when you check-in. I would recommend checking it out both ways if that is something you are considering. Especially if you will get in early enough - or leave late enough you could spend at least a couple of hours in the parks.