よくある問題
よくある問題予期しない文字列エスケープ文字 '&'

予期しない文字列エスケープ文字 '&'

次のエラーメッセージが表示された場合:

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"}}

解決策は:プラグインを無効化してから再度有効化することです。

その後、DBキャッシュプラグインを使用している場合は、DBキャッシュをフラッシュする必要もあります。

問題の説明

この問題の原因は、GraphQLクエリ "translate-customposts" がデータベースに誤って保存されていることです。

これはプラグインを初めてインストールしたときにのみ発生し、かつライセンスが事前に提供されていた場合にのみ起こるため、このエラーは非常にまれです。

何らかの理由(私たちにも不明な理由)で、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 .*><img .*?alt=\\\")%s(\\\")#",
                values: [$value]
              },
              setResultInResponse: true
            )
        @export(
          as: "coreMediaTextAltReplacementsFrom",
        )
      @underJSONObjectProperty(
        by: { key: "to" }
      )
        @export(
          as: "coreMediaTextAltReplacementsTo",
        )

...WordPressはDBに次のように保存します:

    @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;,
        )

プラグインを無効化して再度有効化すると、クエリがデータベースに再保存され、問題が解決されます。