先在 Products 新增通用属性。例如颜色,红、蓝、绿,尺寸,大、中、小。
下图是 terms 资料表
新增一个商品
商品页的下半部把 Attributes 都拉进来
从网址可以看到,现在这个商品代号是 34
下图,原本35-43 那些记录是没有的。但是如图所示,按下 Go 之后,它会自动产生每一种组合。每一个编号都是一笔商品。
下图是 posts 资料表
右边 post_name 栏位,使用线上解码查出,就是主商品的 post_title。难道 post_name 就是 url 字串,俗称的 slug ?
回到 All Products 可以看到,这系列的商品只显示一个。但是资料表确实产生了多件变种商品。
回到该项主商品的编辑页 > Variations, 图中的黑手区域,点击之后可以展开收合该项变种的设定
展开后,可以设定标準价格 Regular price, 优惠价 Sale price... 等等
下图是 postmeta 资料表
其中 meta_id=183, post_id 这笔商品的 postmeta 记录,内容如下
a:2:{s:8:"pa_color";a:6:{s:4:"name";s:8:"pa_color";s:5:"value";s:0:"";s:8:"position";i:0;s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}s:7:"pa_size";a:6:{s:4:"name";s:7:"pa_size";s:5:"value";s:0:"";s:8:"position";i:1;s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}}
pa_color 其中的 pa, 我猜是 product attribute 的缩写
而 meta_value 这一栏的型态,是 longtext
也就是说,wordpress 根本不管什么栏位的优化,像是 用 char 好还是 varchar好?用 varchar 要开多长的宽度?要用 decimal 还是 float 还是 double ?? 反正通通都是 longtext。
我好奇。我之前待过某家公司,料件有两万件。它的网站系统跑起来有点慢。若照 wordpress 这种做法,postmeta 会是好几倍,超过 20 倍算是基本的。
下图把商品代号 35 全抓出来,共21笔。所以两万笔料件 x 21,那就是 42 万笔记录。效率?可能它有快取,目前还不了解它的程式码。