Сводка
Я настроил ~ 15 различных макетов в WordPress, используя функцию гибкого содержимого в ACF.Поскольку их так много, это означает, что некоторые из них не используются автором контента.Когда Гэтсби извлекает содержимое и генерирует структуру данных graphql, он создает структуру на основе использованных макетов.Когда я настраиваю свои запросы для извлечения всех макетов, я получаю сообщение об ошибке, потому что запрашиваются некоторые макеты, которых нет в структуре graphql (потому что они не используются автором).Вот пример запроса.
acf {
content_layouts_page {
__typename
... on WordPressAcf_pullout_lead_with_list {
...plwlFragment
}
... on WordPressAcf_client_list {
...clFragment
}
... on WordPressAcf_titled_list_with_item_description {
...tlwidFragment
}
...more layouts defined
}
}
Вопрос
Как я могу настроить мои запросы к GraphQL, которые будут «на будущее», когда автор решит использовать неиспользуемый макет.
Потенциальное решение
Это решение, о котором я подумал, но я не уверен, возможно ли это.Если я могу просто запросить __typename
, который вернет массив.Затем динамически создайте запрос graphql на основе существующих макетов.
// __typename array = ['WordPressAcf_pullout_lead_with_list', 'on WordPressAcf_client_list']
let queryString = ''
__typename.forEach(layout => {
switch (layout) {
case 'WordPressAcf_pullout_lead_with_list':
queryString += '...on WordPressAcf_pullout_lead_with_list { ...plwlFragment }'
break;
....
}
})
// Use queryString in graphql query
Опять же, не уверен, что это возможно, но это наверняка решит множество проблем.
Github Issue
Этот вопрос был также задан на репо Гэтсби Гитхуба, и было дано руководство.Подробнее здесь