Unerwartetes escaptes Zeichen '&' in einem String
Wenn du diese Fehlermeldung siehst:
Unexpected string escaped character '&'...wie hier:
{"message":"Unexpected string escaped character '&'","locations":[{"line":2596,"column":87}],"extensions":{"code":"gqlparser@4","specifiedBy":"https://spec.graphql.org/draft/#sec-Language"}}Die Lösung lautet: Deaktiviere das Plugin und aktiviere es erneut.
Wenn du das getan hast und ein DB-Cache-Plugin verwendest, musst du außerdem den DB-Cache leeren.
Erklärung des Problems
Die Ursache des Problems liegt darin, dass die GraphQL-Query "translate-customposts" fehlerhaft in der Datenbank gespeichert wurde.
Es scheint nur beim ersten Installieren des Plugins aufzutreten, und nur wenn die Lizenz bereits im Voraus angegeben wurde – dieser Fehler ist daher sehr selten.
Aus einem uns unbekannten Grund kann WordPress den Inhalt der Query beim Speichern beschädigen.
Obwohl die ursprüngliche Query so aussieht:
@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",
)...speichert WordPress sie in der DB so ab:
@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",
)Wenn das Plugin deaktiviert und wieder aktiviert wird, wird die Query erneut in der Datenbank gespeichert und das Problem ist behoben.