บล็อก

⭐️ เปิดตัว v2.4 พร้อมรองรับ Application Passwords, รองรับ WordPress Multisite และ mutations สำหรับเพจ

Leonardo Losoviz
โดย Leonardo Losoviz ·

Gato GraphQL v2.4 เปิดตัวแล้วพร้อมการปรับปรุงและแก้ไขข้อบกพร่องหลายรายการ

รองรับ Application Passwords

ขณะนี้สามารถใช้ WordPress Application Passwords เพื่อส่งคำขอที่ผ่านการยืนยันตัวตนไปยัง GraphQL endpoint ได้แล้ว

ตัวอย่างเช่น เราสามารถส่ง application password เมื่อรันคำสั่ง curl กับ GraphQL server โดยแทนที่ค่า USERNAME และ PASSWORD:

curl -i \
  --user "USERNAME:PASSWORD" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"query": "{ me { name } }"}' \
  https://mysite.com/graphql

เมื่อใช้ Gato GraphQL PRO ด้วยฟิลด์ _strBase64Encode ที่เพิ่งเพิ่มใหม่ เราสามารถใช้ GraphQL เพื่อส่งคำขอ HTTP ที่ผ่านการยืนยันตัวตนไปยังเว็บไซต์ WordPress อื่นได้

queries ด้านล่างรับ username และ application password (รวมถึง endpoint ที่ต้องการเชื่อมต่อ) สร้าง authentication header ที่จำเป็น (ในรูปแบบ "Basic base64encoded(username:password)") และส่งคำขอ HTTP ไปยัง GraphQL server พร้อมส่ง GraphQL query ที่ต้องการรัน:

query GetDataFromExternalWPSite(
  $username: String!
  $appPassword: String!
  $endpoint: URL!
) {
  loginCredentials: _sprintf(
    string: "%s:%s",
    values: [$username, $appPassword]
  )
    @remove
 
  base64EncodedLoginCredentials: _strBase64Encode(
    string: $__loginCredentials
  )
    @remove
 
  loginCredentialsHeaderValue: _sprintf(
    string: "Basic %s",
    values: [$__base64EncodedLoginCredentials]
  )
    @remove
 
  externalHTTPRequestWithUserPassword: _sendGraphQLHTTPRequest(input:{
    endpoint: $endpoint,
    query: """
  
{
  me {
    name
  }
}
 
    """,
    options: {
      headers: [
        {
          name: "Authorization",
          value: $__loginCredentialsHeaderValue
        }
      ]
    }
  })
}

ความเข้ากันได้กับ WordPress Multisite

มีการแก้ไขปัญหาหลายรายการเพื่อให้ Gato GraphQL รองรับเครือข่าย WordPress Multisite ได้อย่างสมบูรณ์

ขณะนี้สามารถเปิดใช้งานใบอนุญาตเดียวของ Gato GraphQL PRO เพื่อดำเนินการ Multisite ทั้งหมดได้แล้ว

ดูวิดีโอสาธิตการแปลเพจบนเว็บไซต์หลายภาษาที่ใช้ WordPress Multisite ซึ่ง Gato GraphQL ช่วยแปลเพจทั้งหมดในเว็บไซต์หลายภาษาที่ใช้เครือข่าย WordPress Multisite:

เพิ่ม mutations สำหรับเพจใน GraphQL schema

เพิ่ม mutations ต่อไปนี้ใน GraphQL schema:

  • Root.createPage
  • Root.updatePage
  • Page.update

ตัวอย่างเช่น ขณะนี้คุณสามารถรัน GraphQL query นี้เพื่อแก้ไขเพจได้:

mutation UpdatePage {
  updatePage(input: {
    id: 2
    title: "Updated title"
    contentAs: { html: "Updated content" },
    status: pending
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    page {
      id
      rawTitle
      rawContent
      status
    }
  }
}

เพิ่มฟิลด์สำหรับดึงเพจของผู้ใช้ที่เข้าสู่ระบบ

v2.4 ยังเพิ่มฟิลด์สำหรับดึงเพจของผู้ใช้ที่เข้าสู่ระบบอยู่ด้วย

ฟิลด์ที่มีอยู่เดิมอย่าง Root.page, Root.pages และ Root.pageCount ดึงเพจสำหรับผู้ใช้ทุกคน แต่จะดึงเฉพาะเพจสาธารณะเท่านั้น (กล่าวคือ เพจที่มีสถานะ "publish")

ตั้งแต่เวอร์ชันนี้เป็นต้นไป เราสามารถดึงเพจสาธารณะหรือส่วนตัวของผู้ใช้ที่เข้าสู่ระบบได้ (กล่าวคือ เพจที่มีสถานะ "publish", "pending", "draft" หรือ "trash") โดยใช้ฟิลด์ใหม่เหล่านี้:

  • Root.myPage
  • Root.myPages
  • Root.myPageCount
query {
  myPages(filter: { status: [draft, pending] }) {
    id
    title
    status
  }
}

เพิ่มฟิลด์สำหรับดึง locale และภาษาของเว็บไซต์

เพิ่มฟิลด์ต่อไปนี้ใน GraphQL schema:

  • Root.siteLocale
  • Root.siteLanguage

ตัวอย่างเช่น เมื่อรัน query ต่อไปนี้:

{
  siteLocale
  siteLanguage
}

...อาจได้ผลลัพธ์ดังนี้:

{
  "data": {
    "siteLocale": "en_US",
    "siteLanguage": "en"
  }
}

ฟิลด์เหล่านี้ให้บริการผ่านโมดูล "Site" ใหม่ การปิดใช้งานโมดูลนี้จะลบฟิลด์ออกจาก GraphQL schema

การปรับปรุงและแก้ไขข้อบกพร่อง

  • ติดตั้ง "internal" private custom endpoint (#2684)
  • เพิ่มเอกสารประกอบสำหรับฟิลด์ PRO ใหม่ _strBase64Encode (#2673)
  • เชื่อมโยง extensions ไปยัง Extensions Reference บน gatographql.com (#2675)
  • เพิ่มลิงก์ YouTube channel ในหน้า About (#2676)
  • เพิ่ม predefined persisted queries:
    • [PRO] แปลและสร้างเพจทั้งหมดสำหรับ Multilingual Site (Multisite / Gutenberg) (#2688)
    • [PRO] แปลและสร้างเพจทั้งหมดสำหรับ Multilingual Site (Multisite / Classic editor) (#2688)
  • เน้น extensions และเปิดใช้งานลิงก์เพื่อเยี่ยมชมบนเว็บไซต์ (#2674)
  • GraphiQL client (สำหรับ LocalWP) ขณะนี้ใช้ URL ของเว็บไซต์เป็น endpoint (#2686)
  • Internal server error จากการส่ง string เมื่อคาดหวัง int (v2.4.1)

สมัครรับจดหมายข่าวของเรา

ติดตามการอัปเดตทั้งหมดของ Gato GraphQL