SEO GRAPHQL theo type page, post, product (ok)

ưới đây là các truy vấn GraphQL đã viết sẵn để lấy metadata SEO từ Rank Math SEO cho từng loại: page, post, và product (giả sử WooCommerce đang dùng WPGraphQL for WooCommerce).


✅ Truy vấn SEO cho Page

graphqlCopyEditquery GetPageSEOMetadata($uri: ID!) {
  page(id: $uri, idType: URI) {
    title
    seo {
      title
      description
      canonicalUrl
      breadcrumbTitle
      robots
      focusKeywords
      fullHead
      jsonLd {
        raw
      }
      breadcrumbs {
        text
        url
      }
    }
  }
}

✅ Truy vấn SEO cho Post


✅ Truy vấn SEO cho Product (WooCommerce)


🔁 Tuỳ biến dùng chung (optionally)

Bạn cũng có thể viết 1 query "union" tùy biến nếu bạn dùng nodeByUri (áp dụng nếu site bạn bật tính năng này):


Nếu bạn đang dùng Next.js với Apollo Client, mình có thể giúp bạn viết sẵn hook hoặc getStaticProps / getServerSideProps để gọi mấy cái này cho chuẩn. Muốn không?

Tuyệt! Dưới đây là cách bạn có thể tích hợp lấy SEO metadata từ Rank Math SEO vào dự án Next.js sử dụng Apollo Client, với cả getStaticProps, getServerSideProps, và React hook nếu dùng Client-side.


🔧 1. Cấu hình Apollo Client

Nếu bạn chưa có sẵn Apollo Client, bạn cần khởi tạo:


📦 2. Tạo GraphQL Query (dùng nodeByUri)


🧠 3. getStaticProps (Static Page với SEO)

✅ Tương ứng với slug: /about, /contact, /products/abc


🕸 4. getServerSideProps (SEO cập nhật real-time)


🪝 5. Custom Hook (Client-side fetching)


🧠 6. Hiển thị SEO data trong <Head>


Nếu bạn cho mình biết:

  • Bạn dùng App Router hay Pages Router?

  • Bạn có cần multi-language (i18n)?

  • Bạn dùng client-side hay server-side rendering?

Mình có thể tinh chỉnh đoạn code này phù hợp hơn 💡

Hoàn hảo! Vì bạn dùng:

  • Next.js Pages Router

  • i18n (đa ngôn ngữ) – ví dụ /en/about, /vi/about

  • Server-side Rendering (SSR)

Mình sẽ giúp bạn tối ưu toàn bộ flow lấy Rank Math SEO metadata theo đúng chuẩn, có thể xài cho bất kỳ trang nào (post, page, product,...).


🧩 1. Cấu trúc URL hỗ trợ i18n

Trong Next.js pages với i18n, bạn thường có:

Nghĩa là:

  • /en/about ⇒ uri là /about

  • /vi/gioi-thieu ⇒ uri là /gioi-thieu

➡️ Ta cần tách locale ra khỏi resolvedUrl để lấy uri.


🧠 2. Viết getServerSideProps với i18n và Rank Math SEO


🔁 3. File query GraphQL


🧱 4. Component SEO (inject vào <Head>)


✅ Kết quả:

  • Bạn có thể thêm SEO tự động cho mọi trang /en/* hoặc /vi/*

  • Sử dụng SSR để lấy đúng dữ liệu từ Rank Math

  • i18n xử lý chuẩn vì mình bóc locale khỏi resolvedUrl


Bạn có muốn mình giúp bạn xử lý luôn cả breadcrumbs hoặc tạo sitemap XML tự động từ Rank Math không?

Last updated

Was this helpful?