[英]How to query Wordpress relational fields with GraphQL?
我在嘗試使用 GraphQL 從 Wordpress 查詢“關系船”類型的自定義帖子類型時遇到問題。
當我嘗試查詢此類“post”類型的字段時,它只會導致此錯誤,並且會中斷所有查詢:
"message": "抽象類型 WpPostObjectUnion 必須在運行時解析為字段 WpPage_HomepageContent_heroSlider.buttonLink 的對象類型,值為 { typename: "ActionMonitorAction" },收到“undefined”。WpPostObjectUnion 類型應提供“resolveType”函數或每個可能的函數type 應該提供一個“isTypeOf”函數。",
這是查詢麻煩的部分:
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 鏈接字段設置為“關系:鏈接”。 這樣就更簡單了,我不需要任何“createSchemaCustomization”或“createResolvers”解決方法來在 GraphQL 的 buttonLink 字段中獲取我的 slug,並且貢獻者仍然可以輕松地在 Wordpress 后台選擇文章。
buttonLink 現在返回給我:
"buttonLink": {
"url": "/2020/09/04/article-test/",
"target": "",
"title": "Article test avec image en avant"
}
這就是我所需要的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.