Gatsby Wordpress ACF 图像字段返回“null”

Posted

技术标签:

【中文标题】Gatsby Wordpress ACF 图像字段返回“null”【英文标题】:Gatsby Wordpress ACF Image fields are returning 'null' 【发布时间】:2019-09-17 18:12:12 【问题描述】:

我有一个 GatsbyJS 网站,通过 gatsby-source-wordpress 使用来自 Wordpress 的数据。直到昨天,当我的查询开始失败时,一切都运行良好。我正在使用高级自定义字段并且无法再查询图像字段,当我获取所有帖子类型为“项目”的帖子时,我的查询看起来像这样......

allWordpressWpProject 
    edges 
        node 
            title
            slug
            path
            link
            acf 
                project_banner_title
                project_slider_image 
                    source_url
                    alt_text
                
                project_navigation_image 
                    source_url
                    alt_text
                
                project_banner_image 
                    source_url
                    alt_text
                
            
        
    

但现在所有图像字段都返回 null。当我通过 Wordpress 运行查询或手动点击 wp-json 端点时,图像字段按预期返回。

有什么想法吗?

【问题讨论】:

同样的问题。突然,字段不再适用于 source_url。就像 gatsby 有某种限制,添加内容会以某种方式将某些页面向下推,并且不会为它们处理。 @KaiQing 你有没有找到更多关于这方面的信息,或者你找到了解决办法? 有点。不是在盖茨比的上下文中,而是更像是一个 wordpress 的。通过将我们的媒体库连接到 CDN 并将字段作为字符串传递,而不是让 gatsby 将它们拉入文件系统,我们设法避免了整个媒体编译部分的开发。最后,这很好用,但是在包含大量图像的页面上,我们确实会经历一些加载时间,但仍然比标准的 wordpress 安装要好。我们升级到了 gatsby 2。我认为这也有所帮助。 【参考方案1】:

确保您的 acf 字段正在输出图像的 url,而不是对象。如果您使用的是gatsby-image-sharp,那么您应该将这些部分放入您的查询中。

allWordpressWpProject 
    edges 
        node 
            title
            slug
            path
            link
            acf 
                project_banner_title
                project_slider_image 
                    localFile 
                        childImageSharp 
                            fluid(maxWidth: 600) 
                                ...GatsbyImageSharpFluid_withWebp
                            
                        
                    
                
                project_navigation_image 
                    localFile 
                        childImageSharp 
                            fluid(maxWidth: 600) 
                                ...GatsbyImageSharpFluid_withWebp
                            
                        
                    
                
                project_banner_image 
                    localFile 
                        childImageSharp 
                            fluid(maxWidth: 600) 
                                ...GatsbyImageSharpFluid_withWebp
                            
                        
                    
                
            
        
    

那么你可以像这样使用gatsby-image

const sliderOne = data.allWordpressWpProject.edges.node.acf.project_slider_image.localFile.childImageSharp.fluid;

<Img fluid=sliderOne alt=project_banner_title />

【讨论】:

以上是关于Gatsby Wordpress ACF 图像字段返回“null”的主要内容,如果未能解决你的问题,请参考以下文章

在 Gatsby 和 GraphQL 中的 wordpress 中过滤 ACF Post Object-field

gatsby-source-graphql + ACF 字段未显示

php 将Gravity表单文件上传字段映射到ACF用户头像图像字段(Wordpress)

GraphQL 检索特定块的数据 - Gatsby + Wordpress

在 foreach 循环中获取 ACF 字段数据 - wordpress

在Wordpress上使用ACF上的自定义字段时找不到“图库”字段类型