Tutorial skema
Tutorial skemaPelajaran 8: Migrasi situs

Pelajaran 8: Migrasi situs

Kita dapat menjalankan sekumpulan GraphQL queries untuk mengadaptasi konten di situs saat memigrasikannya ke domain baru, memindahkan halaman ke URL yang berbeda, atau lainnya.

Agar GraphQL query ini berfungsi, Konfigurasi Skema yang diterapkan pada endpoint perlu mengaktifkan Nested Mutations

Mengadaptasi konten ke domain baru

GraphQL query ini pertama-tama memfilter semua posting yang mengandung "https://my-old-domain.com" dalam kontennya, dan mengganti string ini dengan "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
      }
    }
  }
}

Mengadaptasi konten ke URL posting atau halaman baru

Setelah mengubah slug dari sebuah posting atau halaman, kita dapat mengonversi semua konten agar mengarah ke URL baru.

GraphQL query ini pertama-tama mengambil domain dari pengaturan WordPress "siteurl" untuk membuat ulang URL lama dan baru dari halaman tersebut:

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
      }
    }
  }
}

Kita kemudian menyediakan slug halaman lama dan baru melalui dictionary variables:

{
  "oldPageSlug": "/privacy/",
  "newPageSlug": "/user-privacy/"
}