32.1 C
Jakarta
Sabtu, 12 Juli 2025

Menggunakan Headless WordPress dengan Next.js dan Vercel

WordPress adalah sistem manajemen konten populer (CMS), memberi daya pada lebih dari 43% dari Web. Untuk meningkatkan keamanan, kinerja, dan skalabilitas aplikasi WordPress, pengembang memisahkan konten WordPress mereka dari infrastruktur web mereka.

Posting ini akan menunjukkan cara menggunakan Headless WordPress dengan Frontend Framework (Next.js) pada infrastruktur yang aman dan cepat (Vercel). Contoh yang sudah selesai meliputi:
– Halaman instan memuat dengan prerendering html dari konten wordpress Anda
– Mengambil data fleksibel menggunakan graphql dengan plugin WPGRAPHQL
– Memperbarui konten tanpa menggunakan menggunakan regenerasi statis tambahan (ISR)

Apa itu Headless WordPress

Arsitektur Headless memisahkan frontend Anda dan mundur menjadi potongan-potongan infrastruktur yang terpisah dan terukur secara independen. Headless WordPress memungkinkan Anda untuk menjaga alur kerja konten yang ada di tempat sambil mengembangkan frontend Anda untuk meningkatkan kinerja.

Sementara frontend Anda dapat menggunakan WordPress REST API untuk menampilkan konten Anda, plugin WordPress (seperti WPGraphQL) memungkinkan Anda membuat GraphQL API tanpa konfigurasi apa pun.

Mengapa Memilih Headless

Memisahkan frontend dan konten berbasis CMS memberikan banyak manfaat:
Fleksibel: Anda dapat menggunakan Next.js, Svelte, atau framework frontend lain yang disukai tim Anda dan mengembangkan frontend Anda secara terpisah seiring waktu.
Tangguh: Jika server WordPress Anda mengalami downtime, frontend yang dihosting Vercel akan terus melayani lalu lintas Anda tanpa gangguan, menampilkan konten statis terakhir yang dihasilkan dari cache. Setelah server WordPress Anda kembali online, Anda dapat mulai menampilkan konten baru.
Pembaruan Konten yang Mudah & Instan: Di dasbor WordPress, siapa pun dapat terus memperbarui konten. Pengembang dapat tetap fokus membangun aplikasi sementara yang lain membuat perubahan konten. Selain itu, dengan Regenerasi Statis Inkremental Vercel, perubahan disebarkan secara global dalam waktu kurang dari 500 ms.

Baca Juga: 
Konfigurasi PHP-FPM dengan NGINX

Menggunakan Next.js dengan WordPress Headless

Mari pelajari cara menggunakan WordPress Headless dengan aplikasi Next.js Anda.

1. Konfigurasikan situs WordPress Anda

Anda memerlukan server WordPress. Jika belum memilikinya, Anda dapat memulai secara lokal dengan alat seperti Local.

2. Instal plugin WPGraphQL

Di dasbor WordPress Anda, buka Plugin, klik Tambah Baru, lalu ketik GraphQL di kolom pencarian plugin. Temukan WPGraphQL, klik Instal Sekarang, lalu Aktifkan plugin.

Ini akan membuat bagian baru untuk GraphQL di navigasi samping. Dari sini, Anda dapat mengakses GraphQL IDE, tempat Anda dapat menulis dan menguji kueri serta mengonfigurasi Pengaturan plugin.

3. Bangun frontend dengan Next.js

Contoh awal cms-wordpress dibuat menggunakan templat bawaan Next.js dengan beberapa fitur blog tambahan.

Untuk memulai, jalankan perintah untuk manajer paket Anda:

npx create-next-app --example cms-wordpress cms-wordpress-app

4. Ambil data dari GraphQL API

Di direktori root, salin .env.local.example ke file .env.local baru dan atur WORDPRESS_API_URL ke GraphQL API Anda.

# .env.local
WORDPRESS_API_URL=

Temukan titik akhir di bagian Pengaturan GraphQL di dasbor WordPress. Pengaturan default WPGraphQL adalah /graphql.

5. Instal dependensi dan jalankan server pengembangan Next.js

Selanjutnya, jalankan npm install untuk menginstal dependensi proyek, dan npm run dev untuk memulai server lokal.

Anda sekarang dapat melihat versi lokal aplikasi Anda di http://localhost:3000. Konten postingan blog di halaman beranda Anda bersumber dari backend WordPress Anda.

6. Regenerasi Halaman Statis Inkremental menggunakan getStaticProps

Regenerasi Statis Inkremental (ISR) memungkinkan Anda memperbarui konten yang ditampilkan dari WordPress tanpa perlu men-deploy ulang situs web Anda.

Baca Juga: 
10 Alasan Mengapa ReactJS Masih Menjadi Pilihan Utama untuk Pengembangan Web Front-End

Untuk mengambil data dari WordPress dan membuat halaman yang dirender secara statis, Next.js menggunakan fungsi getStaticProps(). Kita dapat menggunakan properti revalidate untuk menentukan interval waktu guna memeriksa pembaruan konten dari WordPress di latar belakang, yang dipicu oleh permintaan masuk ke halaman Anda. Untuk informasi lebih lanjut, silakan lihat dokumentasinya.

pages/index.js

export async function getStaticProps({ preview = false }) {
  const allPosts = await getAllPostsForHome(preview)

  return {
    props: { allPosts, preview },
    revalidate: 10,
  }
}

Penggunaan ISR memperluas pembuatan situs statis dengan properti revalidate tambahan yang memastikan berapa detik setelah halaman Anda divalidasi ulang. Selama revalidasi, Anda akan menerima versi yang di-cache terlebih dahulu, kemudian versi yang diperbarui (jika ada). Mode caching ini umumnya dikenal sebagai “stale-while-revalidate”.

Fungsi getAllPostsForHome() akan berjalan di sisi server pada waktu pembuatan, mengambil data Anda dari basis data WordPress dan melakukan pra-render konten.

// Get the first 20 posts from WordPress, ordered by the date
export async function getAllPostsFromWordPress(preview) {
  const data = await fetchAPI(`
    query AllPosts {
      posts(first: 20, where: { orderby: { field: DATE, order: DESC } }) {
        edges {
          node {
            title
            excerpt
            slug
            date
          }
        }
      }
    }
  `)

  return data.posts
}

7. Men-deploy aplikasi Next.js ke Vercel


Mari deploy aplikasi Next.js Anda ke Vercel. Anda dapat men-deploy menggunakan templat cms-wordpress dalam beberapa menit dari marketplace templat kami.

Anda akan menambahkan nilai WORDPRESS_API_URL sebagai Variabel Lingkungan selama deployment agar terhubung dengan aman ke API GraphQL Anda.






Reporter: Raymond Buana

WordPress adalah sistem manajemen konten populer (CMS), memberi daya pada lebih dari 43% dari Web. Untuk meningkatkan keamanan, kinerja, dan skalabilitas aplikasi WordPress, pengembang memisahkan konten WordPress mereka dari infrastruktur web mereka.

Posting ini akan menunjukkan cara menggunakan Headless WordPress dengan Frontend Framework (Next.js) pada infrastruktur yang aman dan cepat (Vercel). Contoh yang sudah selesai meliputi:
– Halaman instan memuat dengan prerendering html dari konten wordpress Anda
– Mengambil data fleksibel menggunakan graphql dengan plugin WPGRAPHQL
– Memperbarui konten tanpa menggunakan menggunakan regenerasi statis tambahan (ISR)

Apa itu Headless WordPress

Arsitektur Headless memisahkan frontend Anda dan mundur menjadi potongan-potongan infrastruktur yang terpisah dan terukur secara independen. Headless WordPress memungkinkan Anda untuk menjaga alur kerja konten yang ada di tempat sambil mengembangkan frontend Anda untuk meningkatkan kinerja.

Sementara frontend Anda dapat menggunakan WordPress REST API untuk menampilkan konten Anda, plugin WordPress (seperti WPGraphQL) memungkinkan Anda membuat GraphQL API tanpa konfigurasi apa pun.

Mengapa Memilih Headless

Memisahkan frontend dan konten berbasis CMS memberikan banyak manfaat:
Fleksibel: Anda dapat menggunakan Next.js, Svelte, atau framework frontend lain yang disukai tim Anda dan mengembangkan frontend Anda secara terpisah seiring waktu.
Tangguh: Jika server WordPress Anda mengalami downtime, frontend yang dihosting Vercel akan terus melayani lalu lintas Anda tanpa gangguan, menampilkan konten statis terakhir yang dihasilkan dari cache. Setelah server WordPress Anda kembali online, Anda dapat mulai menampilkan konten baru.
Pembaruan Konten yang Mudah & Instan: Di dasbor WordPress, siapa pun dapat terus memperbarui konten. Pengembang dapat tetap fokus membangun aplikasi sementara yang lain membuat perubahan konten. Selain itu, dengan Regenerasi Statis Inkremental Vercel, perubahan disebarkan secara global dalam waktu kurang dari 500 ms.

Baca Juga: 
10 Alasan Mengapa ReactJS Masih Menjadi Pilihan Utama untuk Pengembangan Web Front-End

Menggunakan Next.js dengan WordPress Headless

Mari pelajari cara menggunakan WordPress Headless dengan aplikasi Next.js Anda.

1. Konfigurasikan situs WordPress Anda

Anda memerlukan server WordPress. Jika belum memilikinya, Anda dapat memulai secara lokal dengan alat seperti Local.

2. Instal plugin WPGraphQL

Di dasbor WordPress Anda, buka Plugin, klik Tambah Baru, lalu ketik GraphQL di kolom pencarian plugin. Temukan WPGraphQL, klik Instal Sekarang, lalu Aktifkan plugin.

Ini akan membuat bagian baru untuk GraphQL di navigasi samping. Dari sini, Anda dapat mengakses GraphQL IDE, tempat Anda dapat menulis dan menguji kueri serta mengonfigurasi Pengaturan plugin.

3. Bangun frontend dengan Next.js

Contoh awal cms-wordpress dibuat menggunakan templat bawaan Next.js dengan beberapa fitur blog tambahan.

Untuk memulai, jalankan perintah untuk manajer paket Anda:

npx create-next-app --example cms-wordpress cms-wordpress-app

4. Ambil data dari GraphQL API

Di direktori root, salin .env.local.example ke file .env.local baru dan atur WORDPRESS_API_URL ke GraphQL API Anda.

# .env.local
WORDPRESS_API_URL=

Temukan titik akhir di bagian Pengaturan GraphQL di dasbor WordPress. Pengaturan default WPGraphQL adalah /graphql.

5. Instal dependensi dan jalankan server pengembangan Next.js

Selanjutnya, jalankan npm install untuk menginstal dependensi proyek, dan npm run dev untuk memulai server lokal.

Anda sekarang dapat melihat versi lokal aplikasi Anda di http://localhost:3000. Konten postingan blog di halaman beranda Anda bersumber dari backend WordPress Anda.

6. Regenerasi Halaman Statis Inkremental menggunakan getStaticProps

Regenerasi Statis Inkremental (ISR) memungkinkan Anda memperbarui konten yang ditampilkan dari WordPress tanpa perlu men-deploy ulang situs web Anda.

Baca Juga: 
Instalasi Virtualmin dengan Nginx dan MariaDB di Debian 11

Untuk mengambil data dari WordPress dan membuat halaman yang dirender secara statis, Next.js menggunakan fungsi getStaticProps(). Kita dapat menggunakan properti revalidate untuk menentukan interval waktu guna memeriksa pembaruan konten dari WordPress di latar belakang, yang dipicu oleh permintaan masuk ke halaman Anda. Untuk informasi lebih lanjut, silakan lihat dokumentasinya.

pages/index.js

export async function getStaticProps({ preview = false }) {
  const allPosts = await getAllPostsForHome(preview)

  return {
    props: { allPosts, preview },
    revalidate: 10,
  }
}

Penggunaan ISR memperluas pembuatan situs statis dengan properti revalidate tambahan yang memastikan berapa detik setelah halaman Anda divalidasi ulang. Selama revalidasi, Anda akan menerima versi yang di-cache terlebih dahulu, kemudian versi yang diperbarui (jika ada). Mode caching ini umumnya dikenal sebagai “stale-while-revalidate”.

Fungsi getAllPostsForHome() akan berjalan di sisi server pada waktu pembuatan, mengambil data Anda dari basis data WordPress dan melakukan pra-render konten.

// Get the first 20 posts from WordPress, ordered by the date
export async function getAllPostsFromWordPress(preview) {
  const data = await fetchAPI(`
    query AllPosts {
      posts(first: 20, where: { orderby: { field: DATE, order: DESC } }) {
        edges {
          node {
            title
            excerpt
            slug
            date
          }
        }
      }
    }
  `)

  return data.posts
}

7. Men-deploy aplikasi Next.js ke Vercel


Mari deploy aplikasi Next.js Anda ke Vercel. Anda dapat men-deploy menggunakan templat cms-wordpress dalam beberapa menit dari marketplace templat kami.

Anda akan menambahkan nilai WORDPRESS_API_URL sebagai Variabel Lingkungan selama deployment agar terhubung dengan aman ke API GraphQL Anda.






Reporter: Raymond Buana

Untuk mendapatkan Berita & Review menarik Saksenengku Network
Google News

Artikel Terkait

Populer

Artikel Terbaru