Blog

⭐️ Phát hành v2.4 với hỗ trợ Application Passwords, tương thích với WordPress multisite và mutations cho trang

Leonardo Losoviz
Bởi Leonardo Losoviz ·

Gato GraphQL v2.4 đã được phát hành với nhiều cải tiến và sửa lỗi.

Hỗ trợ Application Passwords

Bây giờ có thể sử dụng Application Passwords của WordPress để gửi yêu cầu xác thực tới endpoint GraphQL.

Ví dụ, chúng ta có thể truyền application password khi thực thi lệnh curl đến máy chủ GraphQL, thay thế các giá trị USERNAMEPASSWORD:

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

Khi sử dụng Gato GraphQL PRO, nhờ field _strBase64Encode mới được thêm vào, chúng ta có thể sử dụng GraphQL để thực thi các yêu cầu HTTP xác thực đến một trang WordPress khác.

Query bên dưới nhận tên người dùng và application password (cùng với endpoint để kết nối), tạo header xác thực cần thiết (kiểu "Basic base64encoded(username:password)"), và gửi yêu cầu HTTP đến máy chủ GraphQL, truyền GraphQL query cần thực thi:

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

Tương thích với WordPress Multisite

Nhiều vấn đề đã được khắc phục để Gato GraphQL tương thích với mạng WordPress Multisite.

Bây giờ có thể kích hoạt một giấy phép duy nhất của Gato GraphQL PRO để vận hành toàn bộ multisite.

Xem video demo Translating pages on a Multilingual site based on WordPress Multisite, nơi Gato GraphQL giúp dịch tất cả các trang trên một trang web đa ngôn ngữ dựa trên mạng WordPress Multisite:

Thêm page mutations vào schema GraphQL

Các mutations sau đây đã được thêm vào schema GraphQL:

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

Ví dụ, bây giờ bạn có thể thực thi GraphQL query này để chỉnh sửa một trang:

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

Thêm fields để lấy các trang của người dùng đang đăng nhập

v2.4 cũng thêm các fields để truy xuất các trang của người dùng đang đăng nhập.

Các fields đã tồn tại trước đó Root.page, Root.pagesRoot.pageCount truy xuất các trang cho bất kỳ người dùng nào, nhưng chỉ những trang công khai (tức là những trang có trạng thái "publish").

Từ phiên bản này trở đi, chúng ta có thể lấy các trang công khai hoặc riêng tư từ người dùng đang đăng nhập (tức là với trạng thái "publish", "pending", "draft" hoặc "trash"), sử dụng các fields mới sau:

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

Thêm fields để lấy locale và ngôn ngữ của trang web

Các fields sau đây đã được thêm vào schema GraphQL:

  • Root.siteLocale
  • Root.siteLanguage

Ví dụ, thực thi query sau:

{
  siteLocale
  siteLanguage
}

...có thể tạo ra:

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

Các fields này được cung cấp thông qua module "Site" mới. Tắt module này sẽ xóa các fields khỏi schema GraphQL.

Cải tiến và sửa lỗi

  • Cài đặt custom endpoint riêng tư "internal" (#2684)
  • Thêm tài liệu cho field PRO mới _strBase64Encode (#2673)
  • Liên kết các extension đến Extensions Reference trên gatographql.com (#2675)
  • Thêm liên kết kênh YouTube vào trang Giới thiệu (#2676)
  • Thêm các persisted queries được xác định trước:
    • [PRO] Translate and create all pages for a multilingual site (Multisite / Gutenberg) (#2688)
    • [PRO] Translate and create all pages for a multilingual site (Multisite / Classic editor) (#2688)
  • Nổi bật các extension và bật liên kết để truy cập trang web (#2674)
  • Client GraphiQL (dành cho LocalWP) hiện sử dụng URL của trang web làm endpoint (#2686)
  • Lỗi máy chủ nội bộ khi truyền chuỗi khi dự kiến là số nguyên (v2.4.1)

Đăng ký nhận bản tin của chúng tôi

Cập nhật tất cả những điều mới từ Gato GraphQL.