Gatsby WordPress Source - Гибкие макеты содержимого игнорируются graphql, когда они не используются - PullRequest
0 голосов
/ 28 февраля 2019

Сводка

Я настроил ~ 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

Этот вопрос был также задан на репо Гэтсби Гитхуба, и было дано руководство.Подробнее здесь

1 Ответ

0 голосов
/ 01 марта 2019

По состоянию на 1 марта 2019 года невозможно динамически создавать запросы graphql.Решением этой проблемы является создание «фиктивной» страницы со всеми вашими макетами контента и игнорирование ее в запросе graphql.Хотя вы игнорируете это, ваша схема graphql будет содержать все структуры макетов.

allWordpress(Page|Post)(filter:{slug:{ne:"dummy-page"}}) {
    edges {
        node {
            ...
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...