Rewind a few years, and early e-commerce in WordPress was a bit of a hack (as it was in most blogging software).
There was a time when “WordPress is just for blogging” was a valid argument. Products were simply blog posts. Programmatic gymnastics took place to work around this, but in the end, everything was saved in the database as a post with attributes just like any other blog post.
Then, in WordPress 3.0, Custom Post Types came to be, and this opened a vast array of possibilities. Suddenly everything fit in the posts table. Anything you could think of, from social network content to e-commerce products, could all fit in the posts table, with the postmeta table to back it up.
A post could now be thought of as an entity or a model with attributes or properties described by information in the post metadata table.
But it’s not like that anymore.