Javascript 在盖茨比中过滤Wordpress类别

Javascript 在盖茨比中过滤Wordpress类别,javascript,wordpress,graphql,gatsby,Javascript,Wordpress,Graphql,Gatsby,我目前正在使用盖茨比创建一个网站,并使用盖茨比源Wordpress插件从Wordpress查询数据。在我的盖茨比节点文件中,我已经设置了基于帖子类别动态创建网页的功能。当我尝试运行按类别slug排序并按发布日期筛选的查询时,我收到一个错误:“错误:无法获取此StaticQuery的结果。” 有人能看看这个,让我知道我到底出了什么问题吗 盖茨比节点文件: const path = require('path') module.exports.createPages = async ({ grap

我目前正在使用盖茨比创建一个网站,并使用盖茨比源Wordpress插件从Wordpress查询数据。在我的盖茨比节点文件中,我已经设置了基于帖子类别动态创建网页的功能。当我尝试运行按类别slug排序并按发布日期筛选的查询时,我收到一个错误:“错误:无法获取此StaticQuery的结果。”

有人能看看这个,让我知道我到底出了什么问题吗

盖茨比节点文件:

const path = require('path')

module.exports.createPages = async ({ graphql, actions }) => {
  const { createPage } = actions
  const blogPostTemplate = path.resolve('./src/templates/blog-post.js')
  const blogCategoryFilter = path.resolve('./src/templates/blog-filter-category.js')

  const res = await graphql(`
      query {
        allWordpressPost {
          edges {
            node {
              slug
            }
          }
        }
        allWordpressCategory {
          edges {
            node {
              slug
            }
          }
        }
      }
    `)

  res.data.allWordpressPost.edges.forEach((edge) => {
    createPage({
      component: blogPostTemplate,
      path: `/blog/${edge.node.slug}`,
      context: {
        slug: edge.node.slug,
      }
    })
  })

  res.data.allWordpressCategory.edges.forEach((edge) => {
    createPage({
      component: blogCategoryFilter,
      path: `/blog/${edge.node.slug}`,
      context: {
        slug: edge.node.slug,
      }
    })
  })

}
我用于实际生成过滤和排序内容的模板文件(blog filter category.js):


看起来更接近了,但我最终还是收到了同样的错误信息。我迷路了!提前感谢您的帮助。

祝贺您选择与盖茨比合作

我看到的第一个问题是,您试图在静态查询中使用变量。这在目前是不可能的。传递到页面上下文的变量仅在中可用

页面查询在页面模板中定义为简单导出,如:

import { graphql } from 'gatsby'

export const query = graphql`
  query MyQuery($slug: String!) {
    allWordpressPost (filter: {categories: {elemMatch: {slug: { eq: $slug }}}}) {
      edges {
        node {
        title
        slug
        content
        date(formatString: "MMMM DD, YYYY")
      }
    }
  }
}`
在此处了解有关Gatsby中页面查询和静态查询之间的差异的更多信息:

  query($slug: String!) {
    allWordpressPost (filter: {categories: {elemMatch: {slug: { eq: $slug }}}}) {
      edges {
        node {
          title
          slug
          content
          date(formatString: "MMMM DD, YYYY")
        }
      }
    }
  }
import { graphql } from 'gatsby'

export const query = graphql`
  query MyQuery($slug: String!) {
    allWordpressPost (filter: {categories: {elemMatch: {slug: { eq: $slug }}}}) {
      edges {
        node {
        title
        slug
        content
        date(formatString: "MMMM DD, YYYY")
      }
    }
  }
}`