簡體   English   中英

如何使用 GraphQL 查詢 Wordpress 關系字段?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM