Gutenberg: Support for storing CPT metadata in Custom Database Tables

Created on 2 Dec 2017  ·  3Comments  ·  Source: WordPress/gutenberg

As an example, we have two CPTs, Books and Authors, and we would like to store the Books metadata (i.e parent_id, isbn, subtitle, average_rating, ratings_count, publication_date, num_pages, bisac_code, author_id, etc) in a custom DB table "Books" and also store the Authors metadata (i.e works_count, date_of_birth, fans_count, average_rating, etc) in a custom DB table "Authors".

We would then like to query the data like so:

SELECT p.post_id, p.post_title, p.post_content, b.subtitle, b.average_rating, a.post_tile as author_name
FROM wp_posts as p
INNER JOIN books as b ON p.post_id = b.parent_id
INNER JOIN authors as a ON b.author_id = a.id
WHERE b.average_rating => 3 AND YEAR(b.publication_date) => 2007 AND bisac_code = 'FIC009050' AND a.average_rating => 3

Storing all the CPTs metadata in wp_postmeta is not an option because searching over 1 million rows would be very slow and doesn't scale and it's the reason why WooCommerce is moving orders and products to custom DB tables as well.

Will I be able to add custom fields/meta blocks to the two CPTs in Gutenberg and then save that meta data in custom database tables?

Framework [Feature] Block API [Feature] Extensibility [Priority] Low [Type] Enhancement

Most helpful comment

@pmgarman Yes, you can already save the CPTs metadata in custom db tables without Gutenberg but I'm fairly certain that you can't yet do that with Gutenberg.

All 3 comments

You already can do this without the need for changes to Gutenberg. You can do it now without Gutenberg actually. We do it on projects of ours semi regulrly.

@pmgarman Yes, you can already save the CPTs metadata in custom db tables without Gutenberg but I'm fairly certain that you can't yet do that with Gutenberg.

Building blocks that store things in several CPT fields is possible using the EntityProvider and useEntityProperty hook. You can check how PostTitle, PostExcerpt... blocks work.

Was this page helpful?
0 / 5 - 0 ratings