Lektion 8: Website-Migrationen
Wir können eine Reihe von GraphQL-queries ausführen, um den Inhalt der Website anzupassen, wenn wir sie auf eine neue Domain migrieren, Seiten auf eine andere URL verschieben oder anderes durchführen.
Damit diese GraphQL-query funktioniert, muss die Schema-Konfiguration, die auf den Endpunkt angewendet wird, Verschachtelte Mutationen aktiviert haben
Inhalt an die neue Domain anpassen
Diese GraphQL-query filtert zunächst alle Posts, die "https://my-old-domain.com" in ihrem Inhalt enthalten, und ersetzt diesen String durch "https://my-new-domain.com":
mutation ReplaceOldWithNewDomainInPosts {
posts(
filter: {
search: "https://my-old-domain.com"
}
) {
id
rawContent
adaptedRawContent: _strReplace(
search: "https://my-old-domain.com"
replaceWith: "https://my-new-domain.com"
in: $__rawContent
)
update(input: {
contentAs: { html: $__adaptedRawContent }
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
rawContent
}
}
}
}Inhalt an eine neue Post- oder Seiten-URL anpassen
Nachdem du den Slug eines Posts oder einer Seite geändert hast, kannst du den gesamten Inhalt so konvertieren, dass er auf die neue URL verweist.
Diese GraphQL-query ruft zunächst die Domain aus der WordPress-Einstellung "siteurl" ab, um die alte und neue URL der Seite zu rekonstruieren:
query ExportData(
$oldPageSlug: String!
$newPageSlug: String!
) {
siteURL: optionValue(name: "siteurl")
oldPageURL: _strAppend(
after: $__siteURL,
append: $oldPageSlug
) @export(as: "oldPageURL")
newPageURL: _strAppend(
after: $__siteURL,
append: $newPageSlug
) @export(as: "newPageURL")
}
mutation ReplaceOldWithNewURLInPosts
@depends(on: "ExportData")
{
posts(
filter: {
search: $oldPageURL
},
sort: { by: ID, order: ASC }
) {
id
rawContent
adaptedRawContent: _strReplace(
search: $oldPageURL
replaceWith: $newPageURL
in: $__rawContent
)
update(input: {
contentAs: { html: $__adaptedRawContent }
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
rawContent
}
}
}
}Anschließend übergeben wir die alten und neuen Seiten-Slugs über das variables-Dictionary:
{
"oldPageSlug": "/privacy/",
"newPageSlug": "/user-privacy/"
}