Reactjs 如何使用GraphQL查询Wordpress关系字段?
我在试图用GraphQL从Wordpress查询自定义帖子类型“Relationship”时遇到了一个问题 当我尝试查询“post”类型的此类字段时,它只会导致此错误,并中断所有查询: “消息”:“抽象类型WpPostObjectUnion必须在运行时解析为值为{typename:“ActionMonitorAction”}的字段WpPage\u HomepageContent\u heroSlider.buttonLink的对象类型,接收到“undefined”。WpPostObjectUnion类型应提供“resolveType”函数,或者每个可能的类型应提供“isTypeOf”函数, 这是查询中遇到问题的部分:Reactjs 如何使用GraphQL查询Wordpress关系字段?,reactjs,wordpress,graphql,gatsby,Reactjs,Wordpress,Graphql,Gatsby,我在试图用GraphQL从Wordpress查询自定义帖子类型“Relationship”时遇到了一个问题 当我尝试查询“post”类型的此类字段时,它只会导致此错误,并中断所有查询: “消息”:“抽象类型WpPostObjectUnion必须在运行时解析为值为{typename:“ActionMonitorAction”}的字段WpPage\u HomepageContent\u heroSlider.buttonLink的对象类型,接收到“undefined”。WpPostObjectUni
query HomePageQuery {
allWpPage(filter: {slug: {eq: "home"}}) {
nodes {
slug
homepage_content {
heroSlider {
buttonText
buttonLink {
__typename
... on WpPost {
id
}
}
}
}
}
}
}
关于如何解决这个问题或做一些研究的方向有什么想法吗?
谢谢 我找到了一个解决方案来获取“关系:链接到页面或文章”类型的Acf字段所需的数据,如下所示:
exports.createSchemaCustomization = ({ actions }) => {
const { createTypes } = actions
const typeDefs = `
type WpPage_HomepageContent_heroSlider implements Node {
buttonLink: WpPost
}
`
createTypes(typeDefs)
}
exports.createResolvers = ({ createResolvers }) => {
const resolvers = {
Query: {
allButtonLink: {
type: ["WpPage_HomepageContent_heroSlider"],
resolve(source, args, context, info) {
return context.nodeModel.getAllNodes({ type: "ActionMonitorAction" })
},
},
},
}
createResolvers(resolvers)
}
但这是一个繁重的解决方案,我认为这将涉及对这种类型的每个Acf字段执行相同的操作
最佳解决方案:我最终决定将ACF链接字段设置为“Relational:link”类型。
这样就更简单了,我不需要任何“createSchemaCustomization”或“CreateSolvers”解决方案来在GraphQL中的buttonLink字段中获得slug,贡献者仍然可以轻松地在Wordpress backoffice中选择文章
按钮链接现在返回给我:
"buttonLink": {
"url": "/2020/09/04/article-test/",
"target": "",
"title": "Article test avec image en avant"
}
这就是我所需要的使用graphiql Playerd来探索可能的类型/属性感谢我所做的。我终于找到了一个好的和一个坏的解决方案。见下文。