I am aware of the capability of adding meta boxes for single text fields, etc, but that’s not what I am actually after.
Meta fields aren’t just for “single text fields”, the database type is longtext
:
mysql> DESCRIBE wp_postmeta;
+------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+----------------+
| meta_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| post_id | bigint(20) unsigned | NO | MUL | 0 | |
| meta_key | varchar(255) | YES | MUL | NULL | |
| meta_value | longtext | YES | | NULL | |
+------------+---------------------+------+-----+---------+----------------+
4 rows in set (0.08 sec)
This is intentional so you can store just about anything you want in a meta field. When you create your meta box you can use any form input you like as long as you handle it correctly when saving the post.