首页 > 解决方案 > 多种帖子类型的 WPGraphQL 查询片段

问题描述

我想创建一个查询片段,可用于查询共享相同属性的常规 WordPress 帖子和自定义帖子类型。假设我有以下使用 graphql 别名的代码:

query getData($includeCategory: Boolean!) {
  wp {
    data1: customPostTypes(where: {categoryName: "Exammple 1"}, first: 3) {
      nodes {
        ...dataFragment
      }
    }
    data2: posts(first:3) {
      nodes {
        ...dataFragment
      }
    }
    data3: customPostTypes(where: {categoryName:"Example 2"}, first: 3) {
      nodes {
        ...dataFragment
      }
    }
  }
}

和一个如下所示的查询片段:

fragment dataFragment on WP_CustomPostType {
  title
  uri
  status
  id 
  categories @include(if: $includeCategory) {
    nodes {
      name
    }
  }
}

因为我必须定义片段将用于的字段类型,所以它使我无法将它用于我想要的所有帖子类型。上面的示例仅适用于 customPostTypes 而不是帖子,因为需要为此定义的字段是WP_Post

这纯粹是为了化妆品,但如果只为具有相同属性的帖子类型/自定义帖子类型重用一个片段,那就太棒了。

有没有一种方法可以为我的所有帖子类型使用一个查询片段?


更新

这个问题很相似,但是在使用 WPGraphQL 和自定义帖子类型时,使用如下代码:

exports.sourceNodes = ({ actions }) => {
    const { createTypes } = actions
    const typeDefs = `
      interface PostType {
        title: String
        uri: String!
        status: String!
        id: ID!
      }

      type Work implements Node & PostType {
        title: String
        uri: String!
        status: String!
        id: ID!
      }

      type Post implements Node & PostType {
        title: String
        uri: String!
        status: String!
        id: ID!
      }
    `
    createTypes(typeDefs)
  }

产生错误:UNHANDLED REJECTION Schema must contain uniquely named types but contains multiple types named "WP_Work"

标签: wordpressgraphqlgatsbywp-graphql

解决方案


推荐阅读