Ders 8: Site Taşımaları
Siteyi yeni bir alana taşırken, sayfaları farklı bir URL'ye taşırken veya başka durumlarda içeriği uyarlamak için bir grup GraphQL queries çalıştırabiliriz.
Bu GraphQL query'nin çalışması için, endpoint'e uygulanan Şema Yapılandırması'nda İç İçe Mutations etkinleştirilmiş olmalıdır
İçeriği yeni alana uyarlama
Bu GraphQL query önce içeriğinde "https://my-old-domain.com" geçen tüm gönderileri filtreler ve bu dizeyi "https://my-new-domain.com" ile değiştirir:
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
}
}
}
}İçeriği yeni gönderi veya sayfa URL'sine uyarlama
Bir gönderi veya sayfanın slug'ını değiştirdikten sonra, tüm içeriği yeni URL'ye işaret edecek şekilde dönüştürebiliriz.
Bu GraphQL query önce sayfanın eski ve yeni URL'lerini yeniden oluşturmak için WordPress "siteurl" ayarından alan adını alır:
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
}
}
}
}Ardından eski ve yeni sayfa slug'larını variables sözlüğü aracılığıyla sağlarız:
{
"oldPageSlug": "/privacy/",
"newPageSlug": "/user-privacy/"
}