Nieoczekiwany znak ucieczki w ciągu '&'
Jeśli widzisz ten komunikat o błędzie:
Unexpected string escaped character '&'...jak tutaj:
{"message":"Unexpected string escaped character '&'","locations":[{"line":2596,"column":87}],"extensions":{"code":"gqlparser@4","specifiedBy":"https://spec.graphql.org/draft/#sec-Language"}}Rozwiązaniem jest: dezaktywuj i ponownie aktywuj wtyczkę.
Po wykonaniu tej czynności, jeśli masz jakąś wtyczkę do pamięci podręcznej bazy danych, musisz również wyczyścić pamięć podręczną bazy danych.
Wyjaśnienie problemu
Źródłem problemu jest to, że query GraphQL "translate-customposts" została błędnie zapisana w bazie danych.
Wydaje się, że dzieje się to tylko przy pierwszej instalacji wtyczki i tylko wtedy, gdy licencja została dostarczona z wyprzedzeniem, więc ten błąd jest bardzo rzadki.
Z jakiegoś powodu (który nas zaskakuje), WordPress może uszkodzić zawartość query podczas jej zapisywania.
Chociaż oryginalna query wygląda tak:
@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 zapisuje ją w bazie danych w następujący sposób:
@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",
)Po dezaktywowaniu i ponownym aktywowaniu wtyczki query jest ponownie zapisywana w bazie danych i problem zostaje rozwiązany.