首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将ACF与GraphQL和Gatsby一起使用时,灵活的内容不会返回其子块的顺序

当将ACF(Advanced Custom Fields)与GraphQL和Gatsby一起使用时,灵活的内容不会返回其子块的顺序。ACF是一个WordPress插件,用于创建自定义字段和元数据。GraphQL是一种查询语言和运行时环境,用于API的开发和查询。Gatsby是一个基于React的静态网站生成器。

在使用ACF与GraphQL和Gatsby时,灵活的内容指的是使用ACF创建的可重复字段组或灵活内容字段。这些字段允许用户在WordPress后台创建和排序子块,以便在前端展示灵活的内容。

然而,当使用GraphQL和Gatsby查询这些灵活的内容字段时,它们不会按照其子块的顺序返回。这是因为GraphQL查询是基于字段的,而不是基于顺序的。GraphQL查询语言本身并不支持按照特定顺序返回结果。

为了解决这个问题,可以在Gatsby的GraphQL查询中使用ACF的内置函数get_field()来获取灵活内容字段的值,并在前端进行排序。这样可以确保在展示灵活内容时按照预期的顺序进行。

以下是一个示例代码片段,展示了如何在Gatsby中使用ACF与GraphQL一起查询和排序灵活内容字段:

代码语言:txt
复制
import React from "react"
import { graphql } from "gatsby"

const MyComponent = ({ data }) => {
  const flexibleContent = data.wordpressPage.acf.flexible_content

  // 对灵活内容字段进行排序
  const sortedContent = flexibleContent.sort((a, b) => {
    // 根据需要的排序字段进行排序
    return a.order - b.order
  })

  return (
    <div>
      {sortedContent.map((block, index) => (
        <div key={index}>
          {/* 根据不同的块类型渲染不同的内容 */}
          {block.__typename === "WordPressAcf_text_block" && (
            <h2>{block.text}</h2>
          )}
          {block.__typename === "WordPressAcf_image_block" && (
            <img src={block.image.sourceUrl} alt={block.image.altText} />
          )}
          {/* 其他块类型的渲染... */}
        </div>
      ))}
    </div>
  )
}

export const query = graphql`
  query($slug: String!) {
    wordpressPage(slug: { eq: $slug }) {
      acf {
        flexible_content {
          __typename
          ... on WordPressAcf_text_block {
            text
            order
          }
          ... on WordPressAcf_image_block {
            image {
              sourceUrl
              altText
            }
            order
          }
          # 其他块类型的查询...
        }
      }
    }
  }
`

export default MyComponent

在上述代码中,我们首先获取灵活内容字段的值,并使用JavaScript的sort()函数根据预定义的排序字段进行排序。然后,我们根据不同的块类型渲染不同的内容。

需要注意的是,上述代码中的WordPressAcf_text_blockWordPressAcf_image_block是示例中的两种块类型,你需要根据实际情况替换为你在ACF中定义的块类型。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 人工智能机器学习平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  • 移动应用开发平台(MADP):https://cloud.tencent.com/product/madp
  • 对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2018 年前端开发五大趋势

Angular 尽管我们在2018年看到顶级Javascript库竞争趋势直接在AngularVue.js之间展开,但前者在来年实用性不会减少。...REST模型相比,GraphQL是一个智能个人助理,使用你指定源地址,提供所需内容。... Jekyll,Hugo 或 Hexo 等流行解决方案不同,这个静态生成器不使用模板,而是信赖于 Webpack React 组件(注意 React 官网本身也是在 Gatsby 帮助下编写)...除了我们上面描述明显优势外,这种页面有一个重要缺点 —— 它内容不容易被编辑。静态网站生成器专门用于解决此问题,Gatsby 是其中最好,感谢 GraphQL。...今天,许多有用工具支持简单快速地创建功能性客户端 - 服务器系统,包括最着名 Meteor、Firebase、GraphQL Falcor。所有这些工具使编程过程基础化,应用程序可快速响应。

2.9K40

一杯茶时间,上手 Gatsby 搭建个人博客

这就是搭建 Gatsby 博客基本结构了,可以看到非常简单,且因为丰富生态,其它底层接口基本不需要用到。但接下来还是会有一些小坑,第一个便是 GraphQL,我们马上来分析。...在 Gatsby 中,根据 js 文件位置不同,使用 GraphQL 有两种形式,且 Gatsby做了魔法,在 src/pages 下页面可以直接 export GraphQL 查询,在其它页面需要用...这里面查询语句虽然写是字符串,但其实这些查询语句不会出现在最终代码中,Gatsby 会先对抽取[17]。 个人其实不太喜欢魔法,因为会增加初学者理解难度。...Gatsby 如何生成特定页面 一般来说,在 /src/pages/ 目录下组件会自动生成相应路径页面,但如果是其它类型文件就不会了。...通过实现自定义路径基本上可以了解 Gatsby 页面生成方式了。下节中我会继续谈谈其它个性化配置,如草稿模式显示上下篇博文。 草稿模式 草稿模式即可以文章保存为草稿而不被渲染出来。

3.2K20

如何利用机器学习Gatsby.js创建假新闻网站​

基本上,Gatsby.js帮你创建一个有完整骨架网站,你可以调整重新配置,而不是从头开始构建整个东西。...gatsby-transformer-sharpgatsby-transformer-remark也是重要插件。它们可以自动markdown 文件转换为可用于web格式。...其他插件不太重要,就不介绍了。 gatsby-node.js 此文件用于实现api。这些api可以使用GraphQL从数据层中获取数据。在处理程序化页面生成时,我们更深入地研究这个文件内容。...Gatsby构建在React之上,而React是一个JavaScript库,它使使用称为“组件”构建构建用户界面变得更加容易。...你不必把你所有的代码放在一个文件中,你可以把你网站分解成基本构建,然后把它们堆叠在一起,在你需要时候重用各种组件。

4.5K60

Gatsby 创建一个博客

包括(但不限于)使用GraphQL创建内容查询能力,各种cms集成——包括WordPress、Contentful、Drupal等等。还有基于路由代码分布使得用户体验更佳。...在这篇文章中,我们深入探讨 Gatsby 一些新特性,并创建一个静态博客。让我们开始吧!...这些问题,让我们通过编写一个GraphQL查询来回答,以便为我们组件添加内容。 编写一个 GraphQL 查询 在 Template 声明下面,我们添加一个 GraphQL 查询。...接下来:以编程方式创建必要静态页面(并将模板注入) Gatsby Node API,让我们开始吧。 此时需要注意一点是,GraphQL 查询是在构建时进行。...GraphQL查询数据注入到 stringified parsed 后 React 模板。哇,它真的开始工作起来了!

2.5K30

【Web架构】静态站点生成器概述 Gatsby ,Hugo Jekyll对比

除了使用Node之外,Gatsby还对客户端使用了response .js。使用反应物.js使Gatsby能够受益于框架呈现DOM方法,因为组件成为焦点。...Gatsby还支持GraphQL,这意味着数据查询变得更加容易。由于有了GraphQL, Gatsby可以生成能够访问利用来自不同来源数据站点。...它支持GraphQL。 大量插件都是可用——谈谈庞大用户社区好处吧。 解释性教程不难找到,文档也很棒。 缺点 使用Gatsby需要大量JavaScript、ReactGraphQL知识。...Hugo一样,Jekyll也附带一个HTTP服务器,通常用于生成博客。它也经常用于生成投资组合。 虽然Jekyll对页面内容使用Markdown,但它也使用液体模板语言来处理页面。...你认为还有什么静态网站生成器可以这三种匹敌?你可以在评论区分享你想法。 谢谢大家关注,转发,点赞点在看。

3K20

2022 年10个优质 Node.js CMS 平台分享

在本文中,我大家分享一下 「2022」 年使用一些最佳 「Node.js CMS」,希望可以作为我们选择最佳 「CMS」 指南。 什么是内容管理系统?...相反,它充当我们内容基于云存储。内容前端展示解耦。 开发人员通过 「CMS」 提供 「API」(无论是 「REST」 还是 「GraphQL」)访问他们需要向用户显示内容。...接下来就来介绍一下 「2022」 年比较活跃 「CMS」。 1. Strapi 「Strapi」 是一种流行、灵活且开源无头 「CMS」,使我们能够创建丰富数字体验。...「Sanity」 提供了一个 「GraphQL API」,开发人员可以使用它来访问存储在其存储库中内容。 「Sanity」 提供了广泛插件第三方集成,我们可以用来定制我们工作场景并扩展功能。...「Payload」 提供基于配置文件中定义内容集合自动生成 「REST」 GraphQL API」。我们还可以本地 「API」 服务器端框架(例如 「Next.js」)一起使用。

4.4K20

React服务器组件入门

,它向 GitHub API 发出异步请求,并通过 data prop 响应返回给路由或页面。...路由 在此路由中,有一个名为 getServerData 函数,它向 GitHub API 发出异步请求,并通过 data prop 响应返回给路由或页面。...Gatsby useStaticQuery hook 在 2019 年 2 月,Gatsby 引入了 useStaticQuery hook,虽然获取数据方法截然不同(我并不是试图将此 RSC...使用 RSC,数据获取发生在运行时,因此虽然 RSC Gatsby useStaticQuery 钩子之间获取数据方法不同,但当你能够从任何组件内部访问数据时,对架构选择有一些值得称道地方。...它可以真正帮助理解应用程序正在做什么,因为逻辑、数据结果用户界面元素整齐地位于同一文件中,并且追逐道具并尝试遵循数据旅程相比,开发人员体验通常更好。

11710

塔荐 | 2018 年最值得关注 JavaScript 趋势

2017年,他们还推出了 reason-react ,reason跟Reacy绑定在一起,这样你就可以写出可编译成惯用ReactJS Reason代码。...类似于VueReact之争,这个小家伙总是创新得更快,但要取决于大家伙会不会受到哪些创新灵感启发而改进自己项目。...React网站本身就是用Gatsby开发,再也有没有比这更有力证明了。 Gatsby全部关切都在于性能给React提供尽可能快web体验。...Flow & Typescript Typescript Flow 都是JavaScript开发者很好静态类型选项,可以用来改进代码质量。...正如我们redditor网友指出那样,这对于大型团队开发者会极其有用,因为这些人经常会无意识地搞乱了状态。 封装在Immutable.JS对象里面的数据是永远也不会。它总会返回一份新拷贝。

1.5K80

大势 | 2018最值得关注JavaScript趋势

2017年,他们还推出了reason-react,reason跟Reacy绑定在一起,这样你就可以写出可编译成惯用ReactJS Reason代码。...类似于VueReact之争,这个小家伙总是创新得更快,但要取决于大家伙会不会受到哪些创新灵感启发而改进自己项目。...React网站本身就是用Gatsby开发,再也有没有比这更有力证明了。 Gatsby全部关切都在于性能给React提供尽可能快web体验。...Flow & Typescript Typescript  Flow 都是JavaScript开发者很好静态类型选项,可以用来改进代码质量。...正如我们redditor网友指出那样,这对于大型团队开发者会极其有用,因为这些人经常会无意识地搞乱了状态。 “封装在Immutable.JS对象里面的数据是永远也不会。它总会返回一份新拷贝。

79520

博客用不着什么JavaScript框架

它有一个由 GraphQL 支持数据层,并将所有内容输出到静态文件,使你可以在几乎任何地方托管它。...特性来切换到新内容上,而不会触发页面加载。...很有可能,你构建第一个网页性能要比之后构建许多页面都要好得多——它由一个 HTML 文件一些 CSS 组成,也许还有一些未优化图像,但它们并不会阻止页面加载。...并非所有字节都是一样同等大小 JavaScript 文件解析、编译执行所需时间相比,图像解码渲染到屏幕所需时间要少得多。...https://www.gatsbyjs.org/packages/gatsby-plugin-no-javascript/ 你可以继续编写 react 组件 GraphQL,甚至可以使用 CSS-in-JS

4.1K10

学习gatsby,从这里开始!

不中断:网站更新也只是文件覆盖操作,不会因更新而中断服务。 速度快:网站所需数据在编译期就获取、压缩、优化完成,无需在打开网页时再花费时间从第三方获取数据,所以网站访问速度非常快。...--- 二、Gatsby 简介 1、图解系统结构 数据统一:从 不同数据源(下图中 CMS、Private API 等) 获取数据,形成统一数据结构( GraphQL Data Layer) 数据查询...:通过 GraphQL 查询 GraphQL Data Layer 中数据 展示数据:通过React 编写HTML页面,把数据展示出来。...这种 URL 代码文件 之间对应关系就称之为页面路由。那么Gatsby 中怎么新建代码页面?页面路由又有哪些规则? 1、新建页面及其路由 详细步骤,看这里!...--- 七、部署 怎么部署发布gatsby项目? 第一步:有一个备案过域名。可以在阿里云上进行域名注册备案; 第二步:需要一个服务器。

2.2K20

进击JAMStack

JAMStackWeb应用会通过JavaScript给后端API发送AJAX请求或者GraphQL query,后端API会以某种格式(一般是JSON)返回数据给前端来实现一些用户交互。...为了避免重复性无用渲染而且能对SEO友好,Gatsby采取了区分网站静态内容动态内容技术方案。...高性能 为什么JAMStack是高性能呢?这是因为JAMStack应用网站静态部分动态部分区分开来了,那些不会频繁发生变化内容会被提前生成,从而无需使用额外计算资源来进行服务端渲染。...更好开发者体验 拿我们前面提到Gatsby来举例,它就允许我们使用一些现代前端技术来进行开发,例如React,Styled-componentsGraphQL等,这些都是我们前端开发者十分熟悉技术了...除此之外,由于Gatsby使用了React,所以它间接上接入了React生态系统,这样开发者在开发Gatsby用时就可以使用React生态各种最佳实践库实现了,这无疑可以大大提高我们开发效率。

2.8K30

为什么GraphQL是API未来

在本系列教程中,我们研究 GraphQL,了解它是什么,并学习使这种查询语言如此直观和易用原因是什么。 先让我们研究一下 REST 存在问题,以及 GraphQL 如何解决它们。...过度获取欠缺信息 真正令人烦恼问题是通过 REST API 会过度获取欠缺信息。这是因为 REST API 会始终返回固定结构。...在2018年11月,GraphQL Linux Foundation 合作创建了一个 GraphQL Foundation。这种查询语言鼓励开发人员创建更多文档、工具语言支持。...这将确保 GraphQL 稳定、中立可持续发展未来。因此这也是 GraphQL 视为 API 未来另一个原因。...在本系列下一篇教程中,我深入研究 GraphQL,展示 GraphQL 如何类型一起工作,并创建我们第一个查询修改。 所以请继续关注并希望在下一个教程中见到你!

1.6K30

2020 年你应该知道 React 库

例如,gatsby-Firebase-authentication 样板文件只在 Gatsby.js 中为您提供了完整 Firebase 身份验证机制,但是其他所有内容都被省略了。...CSS Modules 受到 create-react-app 支持,并为您提供了 CSS 封装到模块中方法。这样,它就不会意外地泄漏到其他人样式中。...您还可以使用 S3 静态站点 Cloudfront 一起托管。...您甚至可能希望在这些实用函数链接起来时更加灵活,甚至可以将它们动态地组合在一起。这时,您将引入一个实用程序库: Lodash 或 Ramda。...它是一个灵活框架,您可以自己决定选择哪些库。您可以从小型开始,只添加库来解决特定问题。当应用程序增长时,您可以沿途扩展构建。否则你可以通过使用普通 React 来保持轻量级。

14.4K40

Vue.js最佳静态站点生成器对比

Nuxt.js 基于一个可靠模块化架构,并且有 50 多种模块方便用户入门。这些模块提供了内置支持,以 PWA 特性标准功能(例如 Google Analytics)引入你应用程序。... React 中 Gatsby 相似,Gridsome 是一个数据驱动框架。Gridsome 使用一个 GraphQL 层从各种源中获取内容,然后从中动态生成页面。...GraphQL 充当 Gridsome 内容管理系统。... Gatsby Gridsome 类似,Saber 允许你使用你想用数据来创建静态网站。你可以从不同文件系统中提取数据。有了 Saber,你就不用操心 GraphQL 了。...对比基于 Vue.js 基于 React 静态站点生成器,我们可以看到 Nuxt.js、VuePress Gridsome 等框架具有 Gatsby NextJS 竞争实力。

4.9K10

15 个 JavaScript 框架全面概述

自动代码分割:Next.js 自动 JavaScript 包分割成更小,只加载每个页面所需代码,从而实现更快、更高效页面渲染。...通过利用 React GraphQL 强大功能,开发人员可以创建动态内容、实施高级数据源并高效处理大规模内容驱动网站。...SEO 友好:Gatsby 预渲染静态内容对于 SEO 非常有利,因为搜索引擎可以轻松抓取页面并为建立索引。该框架还支持元数据管理并提供用于实施 SEO 最佳实践工具。...丰富插件生态系统:Gatsby 拥有庞大插件生态系统,可扩展功能。开发人员可以轻松地 CMS 平台、无头 CMS、分析部署服务等流行工具集成到他们 Gatsby 项目中。...缺点 学习曲线:虽然 Gatsby 简化了网站开发,但它确实需要熟悉 React GraphQL。刚接触这些技术开发人员在深入了解 Gatsby 之前可能需要花时间了解基础知识。

6.5K10

Serverless 最佳实践之网络请求(上)

下面进入本篇正文,对于请求规范最佳实践,分三来介绍: 为什么需要请求规范? 为什么不直接使用 Restful / GraphQL? FaasJS 请求规范 为什么需要请求规范?...网络请求有着多层协议规范,但在最终应用层,由于业务形态等区别,并没有强制性规范约束,这使得有高度灵活性,使用不当也会造成严重混乱。...在前后端分离背景下,GraphQL 给予了前端开发非常高灵活性,且 Query / Mutation 分离方式,也很好地区分了对数据查询修改。...同时,在 Serverless 场景下,由于 GraphQL 请求入口是单一,这对入口云函数稳定性要求很高,当不可用时,可能会导致全部接口不可用。...规定如下: 请求方法统一为 POST 方法 请求路径为云函数在项目中文件路径 请求参数统一以 JSON 格式放在 Body 中 响应统一返回为 JSON 操作成功响应内容被包裹在 data 字段中

75120

为什么我使用 GraphQL 而放弃 REST API?

当你团队在冲刺期间决定重命名或重新安排对象字段时,你能负担得起上线/api/v1.99端点成本吗?即使完成了,团队会不会忘记更新规范并通知客户端开发人员更新内容?...或者你可以添加project字段,用idname来遍历关系。offset参数添加到allTodos字段进行分页,这样allTodos(count: 5, offset: 5)返回第二页。...客户端库可以很容易地 GraphQL 响应自动解包为所需类型对象实例,因为从模式查询可以提前知道响应形状。 GraphQL 是个时髦东西,是一种时尚,对吗?...有很多流行开源项目都在使用 GraphQL:这个博客是基于静态站点生成器 Gatsby,它将 GraphQL 查询结果转换成数据,然后呈现到 HTML 文件中。...由于 Apollo 客户端库架构简单,我能够一个使用 React.js Redux 应用慢慢过渡到 React Apollo,一个组件一个组件,只在有意义时候才这样做。

2.3K30
领券