Học WordPress + AI / WordPress cho người VIỆT !
WPShare247

Học wordpress cho người mới bắt đầu

  • Bắt đầu
    • Học WordPress
    • Elementor
    • WooCommerce
    • Tạo WordPress
    • Học WordPress kiểu mới 2025
    • Học PHP cơ bản
    • Tạo Website bằng WordPress
    • Quản trị WordPress
    • Sửa lỗi WordPress
    • Theme wordpress
    • Plugin WordPress
    • Hàm PHP
    • Seo WordPress
    • Bảo mật WordPress
    • Html & Css
    • Javascript và jQuery
    • Hướng dẫn lập trình
  • Video
    • Video TikTok
    • Video Shorts
  • Kho plugin
  • Kho Prompt
  • Tải Web Miễn Phí
  • Công cụ
    • Kiểm tra web WordPress
    • WordPress theme gì?
    • Check IP Website
    • Kiểm tra Tên Miền
    • Kiểm Tra SSL
    • Tạo File Disavow Google
    • Tạo QR Code
  • Giới thiệu
    • Khuyến Mãi
  • Đăng nhập
X
☰

Trang chủ » Headless WordPress + Next.js + WPGraphQL – Phần 01

Headless WordPress + Next.js + WPGraphQL – Phần 01

Ngày đăng: Xem: 75
Headless WordPress + Next.js + WPGraphQL – Phần 02 08/03/2026 Xem: 3

Headless WordPress + Next.js + WPGraphQL – Phần 02

Quy trình các bước kiểm tra mã độc định kỳ website WordPress 25/01/2026 Xem: 57

Quy trình các bước kiểm tra mã độc định kỳ website WordPress

Quy trình làm web WordPress Flatsome chuẩn agency bằng AI ChatGPT miễn phí 23/12/2025 Xem: 135

Quy trình làm web WordPress Flatsome chuẩn agency bằng AI ChatGPT miễn phí

App/page.tsx

async function getPosts() {
  const res = await fetch(
    "http://wp.blogcongnghe.local/wp-json/wp/v2/posts",
    { cache: "no-store" }
  );

  if (!res.ok) {
    throw new Error("Failed to fetch posts");
  }

  return res.json();
}

export default async function Home() {
  const posts = await getPosts();

  return (
    <main style={{ padding: 40 }}>
      <h1>Blog Công Nghệ (Headless)</h1>

      <ul>
        {posts.map((post: any) => (
          <li key={post.id} style={{ marginBottom: 20 }}>
            <a href={`/post/${post.slug}`}>
                <h2 dangerouslySetInnerHTML={{ __html: post.title.rendered }} />
            </a>
            
            <div dangerouslySetInnerHTML={{ __html: post.excerpt.rendered }} />
          </li>
        ))}
      </ul>
    </main>
  );
}

App/post/[slug]/page.tsx

type Props = {
  params: Promise<{ slug: string }>;
};

async function getPost(slug: string) {
  const res = await fetch(
    `http://wp.blogcongnghe.local/wp-json/wp/v2/posts?slug=${slug}`,
    { next: { revalidate: 60 }, }
  );

  if (!res.ok) throw new Error("Failed to fetch post");

  const data = await res.json();
  return data[0];
}

export default async function PostPage({ params }: Props) {
  const { slug } = await params;

  const post = await getPost(slug);

  if (!post) return <div>Không tìm thấy bài viết</div>;

  return (
    <main style={{ padding: 40 }}>
      <h1 dangerouslySetInnerHTML={{ __html: post.title.rendered }} />
      <div>Test----8888</div>
      <div dangerouslySetInnerHTML={{ __html: post.content.rendered }} />
    </main>
  );
}

App/api/register/route.ts

export async function POST(req: Request) {
  const body = await req.json();

  const res = await fetch("http://wp.blogcongnghe.local/wp-json/headless/v1/register", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(body),
  });

  const data = await res.json();

  return Response.json(data, { status: res.status });
}

App/register/page.tsx

"use client";
import { useState } from "react";

export default function RegisterPage() {
  const [msg, setMsg] = useState("");

  async function handleSubmit(e: any) {
    e.preventDefault();

    const formData = {
      username: e.target.username.value,
      email: e.target.email.value,
      password: e.target.password.value,
    };

    const res = await fetch("/api/register", {
      method: "POST",
      body: JSON.stringify(formData),
    });

    const data = await res.json();
    setMsg(data.message || "Done");
  }

  return (
    <main style={{ padding: 40 }}>
      <h1>Đăng ký</h1>

      <form onSubmit={handleSubmit}>
        <input name="username" placeholder="Username" required />
        <br /><br />
        <input name="email" placeholder="Email" required />
        <br /><br />
        <input name="password" type="password" placeholder="Password" required />
        <br /><br />
        <button type="submit">Register</button>
      </form>

      <p>{msg}</p>
    </main>
  );
}

Tìm hiểu thêm HeadLess

Tìm hiểu cơ bản về Headless WordPress – WpGraphQL

Shares
ChatGPT ChatGPT
Share
Share
Pin
Về WPShare247

Học wordpress cho người mới bắt đầu.

WPShare247 là blog chia sẻ các kiến thức về WordPress, sửa chữa lỗi wordpress, giới thiệu theme và plugin wordpress mới nhất. Đào tạo khóa học thiết kế Website bằng WordPress.

Menu
  • Trang chủ
  • Giới thiệu
  • Blog
  • Plugin WordPress
  • Liên hệ
Chủ đề wordpress
  • Sửa lỗi WordPress
  • Plugin WordPress
  • Theme wordpress
  • Seo WordPress
  • WooCommerce

Copyright © 2026 WPSHARE247. All Rights Reserved.
Một sản phẩm của WEB 366

  • Thiết kế web bởi Website366.com
  • Thiết kế website chuyên nghiệp TBAY.VN
  • Thiết kế WEB AI