Gutenberg: Поддержка хранения метаданных CPT в настраиваемых таблицах базы данных

Созданный на 2 дек. 2017  ·  3Комментарии  ·  Источник: WordPress/gutenberg

Например, у нас есть два CPT, Книги и Авторы, и мы хотели бы сохранить метаданные Книг (т.е. parent_id, isbn, subtitle, average_rating, rating_count, publishing_date, num_pages, bisac_code, author_id и т. Д.) В настраиваемой таблице БД ». Книги », а также хранить метаданные авторов (т. Е. Количество_работ, дата_ рождения, количество поклонников, средний_ рейтинг и т. Д.) В настраиваемой таблице БД« Авторы ».

Затем мы хотели бы запросить данные следующим образом:

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

Хранение всех метаданных CPT в wp_postmeta не является вариантом, потому что поиск более 1 миллиона строк будет очень медленным и не масштабируется, и это причина, по которой WooCommerce также перемещает заказы и продукты в настраиваемые таблицы БД .

Смогу ли я добавить настраиваемые поля / мета-блоки к двум CPT в Гутенберге, а затем сохранить эти метаданные в настраиваемых таблицах базы данных?

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

Самый полезный комментарий

@pmgarman Да, вы уже можете сохранять метаданные CPT в пользовательских таблицах db без Гутенберга, но я совершенно уверен, что вы пока не можете сделать это с Гутенбергом.

Все 3 Комментарий

Вы уже можете сделать это, не внося изменений в Gutenberg. Фактически, вы можете сделать это и без Гутенберга. Мы делаем это на наших проектах полурегулярно.

@pmgarman Да, вы уже можете сохранять метаданные CPT в пользовательских таблицах db без Гутенберга, но я совершенно уверен, что вы пока не можете сделать это с Гутенбергом.

Строительные блоки, которые хранят данные в нескольких полях CPT, можно использовать с помощью EntityProvider и хука useEntityProperty. Вы можете проверить, как работают блоки PostTitle, PostExcerpt ...

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

spocke picture spocke  ·  3Комментарии

aaronjorbin picture aaronjorbin  ·  3Комментарии

bradyvercher picture bradyvercher  ·  3Комментарии

ellatrix picture ellatrix  ·  3Комментарии

moorscode picture moorscode  ·  3Комментарии