Carattere di stringa con escape inatteso '&'
Se vedi questo messaggio di errore:
Unexpected string escaped character '&'...come qui:
{"message":"Unexpected string escaped character '&'","locations":[{"line":2596,"column":87}],"extensions":{"code":"gqlparser@4","specifiedBy":"https://spec.graphql.org/draft/#sec-Language"}}La soluzione è: disattiva e riattiva il plugin.
Dopo averlo fatto, se hai un plugin di cache del DB, devi anche svuotare la cache del DB.
Spiegazione del problema
L'origine del problema è che la query GraphQL "translate-customposts" è stata memorizzata in modo errato nel database.
Sembra accadere solo la prima volta che il plugin viene installato, e solo se la licenza era stata fornita in anticipo, quindi questo errore è molto raro.
Per qualche ragione (che ci sfugge), WordPress può corrompere il contenuto della query durante la sua memorizzazione.
Anche se la query originale si presenta così:
@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 la memorizza nel DB in questo modo:
@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",
)Disattivando e riattivando il plugin, la query viene salvata nuovamente nel database e il problema viene risolto.