Посмотрев на его источник, я заметил что он кэширует только те идентификаторы, которые необходимо разрешить. Однако сведения о продукте необходимо каждый раз получать из БД. Поэтому я изменил метод render, чтобы просто кэшировать окончательный вывод HTML и вместо этого показывать его. Это, как и ожидалось, резко сократило количество запросов к базе данных.
В идеале я хотел бы изменить поведение, написав собственный плагин/тему. К сожалению, до сих пор я не нашел правильного решения этой проблемы. Блоки WC кажутся тесно интегрированными и имеют внутренние зависимости. Кажется, раньше был способ упаковать блоки отдельно как отдельный плагин, но он, похоже, удален и больше не поддерживается.
В настоящее время я делаю следующее, чтобы получить он работает, но включает в себя использование отражения, и поэтому я бы хотел этого избежать:
- Используйте фильтр JS Gutenberg для получения текущего объявленного render_callback, сохранить ссылку на объект.
- Используйте PHP ReflectionClass для изменения свойств объекта и доступа к ним. используйте их в моей пользовательской функции рендеринга.
- Используйте фильтр JS Gutenberg, чтобы изменить render_callback на мою пользовательскую функцию.
Подробнее здесь: https://stackoverflow.com/questions/792 ... separately
Мобильная версия