Three reasons why WordPress is hard:
- Lack of GUIDs. Posts, Users, Terms and Comments each have their own auto-incremented IDs, meaning a given ID isn’t unique within the system.
- Stores PHP-serialized data in the database.
- Uses absolute paths for resources, instead of relative, which can be located in PHP-serialized data.
It seems every advanced abstraction on top of WordPress ultimately spends 90% of its time finding a solution for these problems.