Carácter de cadena escapada inesperado '&'
Si ves este mensaje de error:
Unexpected string escaped character '&'...como aquí:
{"message":"Unexpected string escaped character '&'","locations":[{"line":2596,"column":87}],"extensions":{"code":"gqlparser@4","specifiedBy":"https://spec.graphql.org/draft/#sec-Language"}}La solución es: desactiva y reactiva el plugin.
Después de hacerlo, si tienes algún plugin de caché de BD, también debes vaciar la caché de la BD.
Explicación del problema
El origen del problema es que la consulta GraphQL "translate-customposts" se ha almacenado erróneamente en la base de datos.
Parece ocurrir solo la primera vez que se instala el plugin, y solo si la licencia se había proporcionado de antemano, por lo que este error es muy poco frecuente.
Por alguna razón (que se nos escapa), WordPress puede corromper el contenido de la consulta al almacenarla.
Aunque la consulta original dice así:
@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 almacena en la BD así:
@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",
)Al desactivar y reactivar el plugin, la consulta se vuelve a guardar en la base de datos, y el problema queda solucionado.