Gatsby Wordpress использует createTypes в схеме GraphQL для пропущенных полей ACF - PullRequest
1 голос
/ 24 мая 2019

Я использую gatsby-source-wordpress. Если у меня есть поле повторителя ACF, в этом другом поле, например, в Link, я получаю сообщение об ошибке, если в каком-либо сообщении есть пустое поле - например: "- Неизвестное поле 'partners' для типа 'wordpress__POSTAcf'."

мой graphQL выглядит следующим образом

{
 allWordpressPost {
   edges {
     node {
       title
       acf {
         project_students
         partners {
           partner_link {
             title
             url
             target
           }
         }
       }
     }
   }
 }

}

Я пытался следовать этому для полей ACF, чтобы хотя бы получить пустое или нулевое значение в поле, которое я могу обработать в JS, сейчас Гатсби не будет собирать. Вот документация Гэтсби, которую я не совсем понимаю для WordPress:

https://www.gatsbyjs.org/blog/2019-03-04-new-schema-customization/ https://www.gatsbyjs.org/docs/actions/#createTypes

Я попробовал следующее в gatsby-node.js, который пока не работает!

// using Gatsby Type Builder API
exports.sourceNodes = ({ actions, schema }) => {
  const { createTypes } = actions;
  const typeDefs = [
    schema.buildObjectType({
      name: "wordpressPost",
      acf: {
        partners: {
          partner_link: {
            title: "String!",
            url: "String!",
            target: "String!",
          }
        }
      },
      interfaces: ["Node"],
      extensions: {
        infer: false
      }
    })
  ];
  createTypes(typeDefs);
};

1 Ответ

0 голосов
/ 22 июля 2019

TL; DR: добавьте это к вашему function.php в вашем источнике:

function nullify_empty($value, $post_id, $field)
{
    if (empty($value)) {
        return null;
    }

    return $value;
}

add_filter('acf/format_value/type=image', 'nullify_empty', 100, 3);
add_filter('acf/format_value/type=relationship', 'nullify_empty', 100, 3);
// not sure if gallery is internally named gallery as well but this should work
add_filter('acf/format_value/type=gallery', 'nullify_empty', 100, 3); 

У меня была та же ошибка, я думаю, вот мой билет, который решил ее: https://github.com/gatsbyjs/gatsby/issues/4461

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...