Учебник по схемеУрок 8: Миграция сайта
Урок 8: Миграция сайта
Мы можем выполнить пакет GraphQL queries для адаптации контента сайта при его миграции на новый домен, переносе страниц на другой URL и в других случаях.
Чтобы этот GraphQL query работал, в Конфигурации схемы, применённой к эндпоинту, должны быть включены Вложенные мутации
Адаптация контента к новому домену
Этот GraphQL query сначала фильтрует все записи, содержащие "https://my-old-domain.com" в своём контенте, и заменяет эту строку на "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
}
}
}
}Адаптация контента к новому URL записи или страницы
После изменения слага записи или страницы мы можем обновить весь контент, чтобы он указывал на новый URL.
Этот GraphQL query сначала получает домен из настройки WordPress "siteurl", чтобы воссоздать старый и новый URL страницы:
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
}
}
}
}Затем мы передаём старый и новый слаги страницы через словарь variables:
{
"oldPageSlug": "/privacy/",
"newPageSlug": "/user-privacy/"
}