常见问题
常见问题意外的字符串转义字符 '&'

意外的字符串转义字符 '&'

如果您看到以下错误消息:

Unexpected string escaped character '&'

...例如像这样:

{"message":"Unexpected string escaped character '&'","locations":[{"line":2596,"column":87}],"extensions":{"code":"gqlparser@4","specifiedBy":"https://spec.graphql.org/draft/#sec-Language"}}

解决方法是:停用插件后重新启用

完成后,如果您有任何数据库缓存插件,还必须清空数据库缓存

问题说明

此问题的根源在于 GraphQL Query "translate-customposts" 被错误地存储到了数据库中。

此问题似乎只在插件首次安装时发生,且仅在事先提供了许可证的情况下才会出现,因此此错误非常罕见。

由于某些原因(我们也无法解释),WordPress 在存储 Query 时可能会损坏其内容。

尽管原始 Query 如下所示:

    @underJSONObjectProperty(
      by: { key: "coreMediaTextAlt" }
      affectDirectivesUnderPos: [1, 6]
    )
      @underJSONObjectProperty(
        by: { key: "from" }
        affectDirectivesUnderPos: [1, 4],
      )
        @underEachJSONObjectProperty
          @underEachArrayItem(
            passValueOnwardsAs: "value"
          )
            @applyField(
              name: "_sprintf",
              arguments: {
                string: "#(<!-- wp:media-text .*?-->\\n?<div .*><figure .*><img .*?alt=\\\")%s(\\\")#",
                values: [$value]
              },
              setResultInResponse: true
            )
        @export(
          as: "coreMediaTextAltReplacementsFrom",
        )
      @underJSONObjectProperty(
        by: { key: "to" }
      )
        @export(
          as: "coreMediaTextAltReplacementsTo",
        )

...WordPress 却将其以如下形式存储到数据库中:

    @underJSONObjectProperty(
      by: { key: "coreMediaTextAlt" }
      affectDirectivesUnderPos: [1, 6]
    )
      @underJSONObjectProperty(
        by: { key: "from" }
        affectDirectivesUnderPos: [1, 4],
      )
        @underEachJSONObjectProperty
          @underEachArrayItem(
            passValueOnwardsAs: "value"
          )
            @applyField(
              name: "_sprintf",
              arguments: {
                string: "#(<!-- wp:media-text .*?-->\\n?<div><figure>&lt;img .*?alt=\\\&quot;)%s(\\\&quot;)#&quot;,
                values: [$value]
              },
              setResultInResponse: true
            )
        @export(
          as: &quot;coreMediaTextAltReplacementsFrom&quot;,
        )
      @underJSONObjectProperty(
        by: { key: &quot;to&quot; }
      )
        @export(
          as: &quot;coreMediaTextAltReplacementsTo&quot;,
        )

停用并重新启用插件后,Query 将被重新保存到数据库中,问题即可得到解决。