{"id":44385,"date":"2025-05-19T17:37:38","date_gmt":"2025-05-19T10:37:38","guid":{"rendered":"\/id\/tutorial\/?p=44385"},"modified":"2025-05-19T17:46:22","modified_gmt":"2025-05-19T10:46:22","slug":"panduan-wordpress-react","status":"publish","type":"post","link":"\/id\/tutorial\/panduan-wordpress-react","title":{"rendered":"WordPress React: Tutorial menggunakan React dengan WordPress"},"content":{"rendered":"<p>WordPress adalah <a href=\"\/id\/tutorial\/apa-itu-cms\">CMS (content management system)<\/a> canggih untuk membuat berbagai jenis website, mulai dari website sederhana hingga toko online yang kompleks. Untuk mengintegrasikan kode PHP platform ini dengan JavaScript, Anda bisa memanfaatkan <a href=\"https:\/\/developer.wordpress.org\/rest-api\/\" target=\"_blank\" rel=\"noopener\">WP REST API<\/a> dan WordPress <a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noopener\">React<\/a>.<\/p><p>React, yang dikembangkan oleh Facebook, adalah library <strong>UI (user interface)<\/strong> untuk membuat aplikasi lintas platform yang bisa diatur sesuai kebutuhan dan mudah dimengerti. Namun, agar bisa memanfaatkannya secara maksimal, Anda perlu memahami cara menggunakannya dengan benar.<\/p><p>Di artikel ini, kami akan menjelaskan cara menggunakan React dengan WordPress. Kami akan membantu Anda memahami framework ini, manfaatnya, serta cara menggunakannya. Yuk, langsung saja kita mulai!<\/p><h2 class=\"wp-block-heading\" id=\"h-apa-itu-react\">Apa itu React?<\/h2><p>Sebelum mulai dengan pembahasannya, mari kita pelajari dulu <a href=\"\/id\/tutorial\/apa-itu-react\">apa itu React<\/a>. ReactJS, juga dikenal sebagai React, adalah salah satu library JavaScript yang paling populer. React menggunakan metode berbasis komponen sederhana yang bisa Anda gunakan untuk pembuatan web.<\/p><p>Di samping itu, library ini mencakup berbagai macam potongan kode JavaScript yang bisa digunakan untuk membuat komponen UI.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1024\" height=\"326\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/banner-react.jpg\/public\" alt=\"homepage website react\" class=\"wp-image-44387\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/banner-react.jpg\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/banner-react.jpg\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/banner-react.jpg\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/banner-react.jpg\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><p>Perlu diingat bahwa ReactJS bukanlah framework JavaScript karena hanya merender komponen-komponen untuk tampilan aplikasi. Jadi, kalau membutuhkan fungsi yang lebih canggih, Anda bisa menggabungkannya dengan framework sebenarnya, seperti <a href=\"https:\/\/vuejs.org\/\" target=\"_blank\" rel=\"noopener\">Vue.js<\/a>.<\/p><p>Selain itu, perlu diperhatikan bahwa selain ReactJS, ada <a href=\"https:\/\/reactnative.dev\/\" target=\"_blank\" rel=\"noopener\">React Native<\/a> yang merupakan framework JavaScript open-source yang dikembangkan berdasarkan library React. Anda bisa menggunakannya untuk membuat aplikasi lintas platform dan komponen khusus untuk platform iOS dan Android.<\/p><h2 class=\"wp-block-heading\" id=\"h-fitur-dan-fungsi-react\">Fitur dan fungsi React<\/h2><p>Untuk memahami manfaat React, Anda sebaiknya mengetahui cara kerjanya dulu. Berikut adalah beberapa fitur dan fungsi yang paling signifikan:<\/p><h3 class=\"wp-block-heading\" id=\"h-jsx\">JSX<\/h3><p><a href=\"https:\/\/reactjs.org\/docs\/introducing-jsx.html\" target=\"_blank\" rel=\"noopener\">JSX<\/a> adalah ekstensi syntax JavaScript utama yang digunakan di React. Anda bisa menggunakannya untuk menyematkan kode HTML pada objek JavaScript dan menyederhanakan struktur kode yang rumit.<\/p><p>Selain itu, JSX membantu mencegah <a href=\"https:\/\/owasp.org\/www-community\/attacks\/xss\/\" target=\"_blank\" rel=\"noopener\">serangan cross-site scripting (XSS)<\/a> dengan mempersulit pihak eksternal menginjeksi kode tambahan melalui input pengguna yang tidak ditulis secara eksplisit dalam aplikasi.<\/p><p>Tag JSX mencakup sebuah nama, child, dan atribut. Misalnya, tag gambar HTML biasa akan terlihat seperti ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;img class=\"\" src=\"\" alt=\"\" &gt;<\/pre><p>Namun, tag JSX akan terlihat seperti berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;img className=\"\" src=\"\" alt=\"\" \/&gt;<\/pre><p>Selain itu, nilai numerik ditulis dalam tanda kurung kurawal. Mirip dengan JavaScript, tanda petik mewakili string:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const name = 'John Doe&rsquo;;\nconst element = &lt;h1&gt;Hello, {name}&lt;\/h1&gt;;\n\nReactDOM.render(\n  element,\n  document.getElementById('root')\n);<\/pre><p>Anda bisa menambahkan <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Guide\/Expressions_and_Operators#Expressions\" target=\"_blank\" rel=\"noopener\">ekspresi JavaScript<\/a> apa pun yang valid dalam tanda kurung kurawal. Sebagai contoh, ekspresi ini bisa berupa &ldquo;user.firstName&rdquo; atau &ldquo;formatName(user)&rdquo;.<\/p><h3 class=\"wp-block-heading\" id=\"h-virtual-dom\">Virtual DOM<\/h3><p><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Document_Object_Model\/Introduction\" target=\"_blank\" rel=\"noopener\">Document Object Model (DOM<\/a>) menyajikan halaman web dalam struktur pohon data, yang disimpan React dalam memorinya. React bisa mengimplementasikan update pada bagian tertentu dari pohon data tersebut daripada merender ulang seluruhnya.<\/p><p>Model ini memiliki <a href=\"https:\/\/reactjs.org\/docs\/dom-elements.html\" target=\"_blank\" rel=\"noopener\">Virtual DOM<\/a>, yang menyediakan data-binding satu arah sehingga manipulasi dan update bisa dilakukan lebih cepat daripada DOM biasa.<\/p><p>Virtual DOM menggunakan proses yang disebut diffing, yaitu ketika React membuat pohon Virtual DOM baru, membandingkannya dengan yang lama, lalu menemukan cara yang paling efisien untuk menerapkan perubahan pada DOM yang sebenarnya.<\/p><p>Proses ini membutuhkan waktu yang lebih singkat dan resource yang lebih sedikit, yang tentunya sangat berguna untuk proyek-proyek besar yang melibatkan banyak interaksi dengan pengguna.<\/p><p>DOM juga mendukung <a href=\"\/id\/tutorial\/api-adalah\">API (application programming interface)<\/a> deklaratif, yang berarti Anda bisa memberi tahu React tentang state yang Anda inginkan pada UI untuk memastikan DOM akan sesuai dengan state tersebut.<\/p><h3 class=\"wp-block-heading\" id=\"h-komponen\">Komponen<\/h3><p>Seperti yang tadi dijelaskan, <a href=\"https:\/\/reactjs.org\/docs\/components-and-props.html\" target=\"_blank\" rel=\"noopener\">komponen di React<\/a> adalah kode-kode sendiri yang bisa digunakan kembali untuk membuat bagian UI.<\/p><p>Cara kerjanya mirip dengan fungsi JavaScript. Komponen ini menerima props, yang merupakan input yang berubah-ubah. Ketika suatu komponen fungsi menghasilkan elemen, komponen tersebut akan memengaruhi tampilan UI yang terlihat.<\/p><p>Props bersifat read-only (hanya baca). Berikut contohnya:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import React, { useState } from 'react' \nimport ReactDOM from 'react-dom' \n \nconst ParentComponent = () =&gt; { \n    const [stateVariable, setStateVariable] = useState('this is the starting value for the variable'); \n \n    return ( \n        &lt;div&gt; \n            &lt;h1&gt;This is a function component view&lt;\/h1&gt;\n            &lt;ChildComponent exampleProp={stateVariable} \/&gt;\n        &lt;\/div&gt; \n    ) \n} \n \nconst ChildComponent = (props) =&gt; {\n    return (\n        &lt;div&gt;\n            &lt;h2&gt;{props.exampleProp}&lt;\/h2&gt;\n        &lt;\/div&gt;\n    )\n}\n \n \nReactDOM.render( &lt;ParentComponent \/&gt;, document.getElementById('app') );<\/pre><p>Komponen memiliki dua jenis utama: komponen <strong>class<\/strong> dan komponen <strong>functional<\/strong>. Komponen class menggunakan hook WordPress lifecycle dan panggilan API:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class ExampleComponent extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = { };\n  }\n  render() {\n    return (\n      &lt;div&gt;\n        &lt;h1&gt;This is a view created by a class component&lt;\/h1&gt;\n      &lt;\/div&gt;\n    );\n  }\n}<\/pre><p>Sementara itu, komponen functional akan terlihat seperti contoh di bawah ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const ExampleComponent = (props) =&gt; {\n    const [stateVariable, setStateVariable] = useState('');\n    return (\n        &lt;div&gt;\n            &lt;h1&gt;This is a function component view&lt;\/h1&gt;\n        &lt;\/div&gt;\n    )\n}<\/pre><p>Komponen fungsional berfungsi untuk merender tampilan tanpa permintaan data atau state management.<\/p><h3 class=\"wp-block-heading\" id=\"h-state\">State<\/h3><p><a href=\"https:\/\/reactjs.org\/docs\/state-and-lifecycle.html\" target=\"_blank\" rel=\"noopener\">State<\/a> mengacu pada objek bawaan dari komponen React. Di sinilah Anda menyimpan nilai properti elemen. Kalau state berubah, komponen akan dirender ulang.<\/p><p>State management adalah proses pengelolaan state aplikasi ini dan penyimpanan data dalam library state management. Anda bisa menggunakan beberapa library state management, termasuk <a href=\"https:\/\/redux.js.org\/\" target=\"_blank\" rel=\"noopener\">Redux<\/a> dan <a href=\"https:\/\/recoiljs.org\/\" target=\"_blank\" rel=\"noopener\">Recoil<\/a> (lebih mudah bagi pemula).<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"\/id\/wordpress-hosting\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/06\/ID-New-WP_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-37614\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/06\/ID-New-WP_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/06\/ID-New-WP_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/06\/ID-New-WP_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/06\/ID-New-WP_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div><h2 class=\"wp-block-heading\" id=\"h-apa-keuntungan-menggunakan-react\">Apa keuntungan menggunakan React?<\/h2><p>Ada banyak manfaat menggunakan React untuk pengembangan WordPress. Misalnya, React sangat mudah digunakan oleh pemula, dan sebagian besar <a href=\"\/id\/web-hosting\">solusi hosting<\/a> populer juga mendukungnya.<\/p><p>Karena library ini menggunakan JavaScript biasa dan komponen-komponen sederhana, Anda bisa menggunakannya untuk membuat aplikasi berbasis web tanpa harus mempelajari aspek teknis tingkat lanjutnya. Tersedia juga berbagai website <a href=\"\/id\/tutorial\/belajar-coding-online-gratis\">belajar coding online gratis<\/a> untuk mempelajari penggunaan JavaScript guna membantu Anda mempermudah prosesnya.<\/p><p>Selain itu, React memungkinkan Anda menggunakan ulang komponen Anda di aplikasi lain. Library ini bersifat <a href=\"\/id\/tutorial\/open-source-adalah\">open-source<\/a> sehingga Anda bisa membuat komponen Anda dulu, lalu menggabungkannya dengan komponen lain tanpa khawatir kodenya akan terlalu panjang.<\/p><p>Komponen React juga relatif mudah ditulis berkat integrasi JSX, yang akan kita bahas nanti. Anda bisa menggabungkan tipografi dan tag HTML, serta memanfaatkan beberapa fungsi rendering untuk pengembangan aplikasi dinamis.<\/p><p>Dengan React, Anda bisa menggunakan CLI (command-line resmi) yang disebut <strong>Create React App<\/strong> untuk mempercepat pembuatan aplikasi satu halaman. CLI ini dilengkapi dengan tool siap pakai yang akan membantu Anda menyiapkan dan mempelajarinya.<\/p><p>Terakhir, React juga SEO-friendly. Implementasi Virtual DOM membantu meningkatkan kecepatan halaman web, performa, serta rendering sisi server sehingga bot mesin pencari bisa melakukan crawling pada website Anda dengan lebih mudah.<\/p><h2 class=\"wp-block-heading\" id=\"h-memahami-wp-rest-api\">Memahami WP Rest API<\/h2><p>WP REST API adalah sekumpulan protokol yang digunakan untuk membuat aplikasi software, memungkinkan para developer mengintegrasikan framework JavaScript seperti React dengan WordPress.<\/p><p>Protokol ini menentukan proses distribusi informasi dan data di antara beberapa program serta interaksi antarkomponennya. REST (Representational State Transfer) mengacu pada batasan arsitektur yang menentukan gaya program. Anda bisa mengakses WP REST API dari front-end website, menambahkan jenis postingan kustom, dan membuat aplikasi React yang didukung oleh API ini.<\/p><p>Untuk menyusun data agar bisa dibaca oleh aplikasi, WP REST API menggunakan format <a href=\"\/id\/tutorial\/apa-itu-json\">JSON (JavaScript Object Notation)<\/a>. Format ini membantu menyederhanakan komunikasi antara WordPress dengan aplikasi serta program lainnya.<\/p><p>WP REST API menghasilkan sistem decoupling yang memungkinkan pengguna memperlakukan <a href=\"\/id\/tutorial\/headless-wordpress\">WordPress sebagai CMS headless<\/a>. Artinya, pengguna bisa mengaitkan berbagai framework front-end dengan bagian backend WordPress, ideal bagi developer yang tidak begitu menyukai PHP.<\/p><h2 class=\"wp-block-heading\" id=\"h-panduan-konfigurasi-awal-react\">Panduan konfigurasi awal React<\/h2><p>Untuk mempelajari React Native, akan lebih mudah kalau Anda sudah memahami <a href=\"\/id\/tutorial\/apa-itu-javascript\">JavaScript<\/a>, <a href=\"\/id\/tutorial\/apa-itu-css\">CSS<\/a>, dan <a href=\"\/id\/tutorial\/apa-itu-html\">HTML<\/a>. Selain itu, prosesnya bisa lebih efisien apabila Anda sudah terbiasa menggunakan <a href=\"http:\/\/es6-features.org\/\" target=\"_blank\" rel=\"noopener\">ECMAScript 6<\/a> (juga disebut ES6), pemrograman fungsional, dan pemrograman berorientasi objek.<\/p><p>Dari sisi program, Anda juga perlu menginstal beberapa dependensi di komputer, seperti <a href=\"\/id\/tutorial\/node-js-adalah\">NodeJS<\/a> dan <a href=\"\/id\/tutorial\/apa-itu-npm\">npm<\/a>, serta editor teks. Atau, Anda mungkin juga ingin menggunakan <a href=\"https:\/\/git-scm.com\/downloads\" target=\"_blank\" rel=\"noopener\">Git<\/a> untuk mengontrol versi aplikasi Anda.<\/p><p>Cara yang paling populer untuk mengembangkan proyek React untuk WordPress adalah dengan menggunakan <a href=\"https:\/\/create-react-app.dev\/\" target=\"_blank\" rel=\"noopener\">Create React App<\/a>:<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1024\" height=\"359\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/halaman-create-react-app.png\/public\" alt=\"halaman create react app\" class=\"wp-image-44390\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/halaman-create-react-app.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/halaman-create-react-app.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/halaman-create-react-app.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/halaman-create-react-app.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><p>CRA menyediakan alur yang praktis untuk mempelajari React dan menggunakannya untuk membuat aplikasi satu halaman. Namun, untuk menggunakannya, Anda harus sudah memiliki Node dan npm di perangkat Anda.<\/p><p>Untuk membuat proyek baru, jalankan perintah berikut di terminal Anda:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npx create-react-app wp-react-demo<\/pre><p>Apabila Create React App belum terinstal, Anda akan melihat pesan konfirmasi yang meminta Anda menginstalnya sebelum membuat demo. Proses ini akan membuat template boilerplate. Anda juga bisa mengganti &ldquo;wp-react-demo&rdquo; dengan nama Anda sendiri.<\/p><p>Selanjutnya, jalankan perintah berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cd wp-react-demo\nnpm start<\/pre><p>Struktur direktorinya akan terlihat seperti ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&#9500;&#9472;&#9472; README.md\n&#9500;&#9472;&#9472; package.json\n&#9500;&#9472;&#9472; public\n&#9474; &#9500;&#9472;&#9472; favicon.ico\n&#9474; &#9500;&#9472;&#9472; index.html\n&#9474; &#9492;&#9472;&#9472; manifest.json\n&#9500;&#9472;&#9472; src\n&#9474; &#9500;&#9472;&#9472; App.css\n&#9474; &#9500;&#9472;&#9472; App.js\n&#9474; &#9500;&#9472;&#9472; App.test.js\n&#9474; &#9500;&#9472;&#9472; index.css\n&#9474; &#9500;&#9472;&#9472; index.js\n&#9474; &#9500;&#9472;&#9472; logo.svg\n&#9474; &#9492;&#9472;&#9472; registerServiceWorker.js<\/pre><p>Dalam direktori src, Anda akan menemukan semua file JavaScript yang akan Anda tangani. Sekarang, Anda bisa mengakses <strong>localhost:3000<\/strong> di web browser untuk membuka file <strong>index.html<\/strong>.<\/p><p>Di dalam isi file <strong>public\/index.html<\/strong> yang cukup singkat, temukan baris berikut ini, yang akan menjadi titik awal proyek Anda:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;div id=\"root\"&gt;&lt;\/div&gt;<\/pre><p>Di bawah file <strong>index.js<\/strong> dalam direktori src, Anda akan menemukan potongan berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from '.\/App';\n \nReactDOM.render(&lt;App \/&gt;, document.getElementById('root'));<\/pre><p>Hal ini berarti file tersebut merender komponen <strong>App<\/strong>, yang bisa Anda temukan di bawah <strong>src.\/App.js<\/strong>. Anda bisa menggantinya dengan konten HTML Anda sendiri. Kita bisa menggunakan HTML insider&nbsp;<code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">render()<\/code> berkat ekstensi syntax JSX.<\/p><h2 class=\"wp-block-heading\" id=\"h-cara-query-wp-rest-api-dari-react\">Cara query WP REST API dari React<\/h2><p>Secara default, Anda bisa membuat&nbsp;permintaan <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">GET<\/code> untuk menggunakan WP REST API di front-end website. Sebagai contoh, Anda bisa menggunakan <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">\/wp-json\/wp\/v2\/posts<\/code> untuk mendapatkan semua postingan Anda.<\/p><p>Dengan menggunakan contoh sebelumnya, data postingan ini akan terletak di <strong><strong>http:\/\/localhost\/wp-json\/wp\/v2\/posts\/<\/strong><\/strong>.<\/p><p>Untuk mulai menggunakan React, Anda bisa menjalankan perintah berikut di terminal:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npx create-react-app react-app<\/pre><p>Kemudian, jalankan perintah berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cd react-app \nnpm install @material-ui\/core<\/pre><p>Selanjutnya, Anda bisa memasukkan contoh di bawah ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import React, { useEffect, useState } from 'react';\nimport Card from '@material-ui\/core\/Card';\nimport CardContent from '@material-ui\/core\/CardContent';\nimport Typography from '@material-ui\/core\/Typography';\nimport Grid from '@material-ui\/core\/Grid';\n    \nexport default function Posts() {\n    const [posts, setPosts] = useState([]);\n    useEffect(() =&gt; {\n        async function loadPosts() {\n            const response = await fetch('\/wp-json\/wp\/v2\/posts');\n            if(!response.ok) {\n                \/\/ oups! something went wrong\n                return;\n            }\n    \n            const posts = await response.json();\n            setPosts(posts);\n        }\n    \n        loadPosts();\n   }, [])\n  return (\n    &lt;Grid container spacing={2}&gt;\n      {posts.map((post, index) =&gt; (\n      &lt;Grid item xs={4} key={index}&gt;\n        &lt;Card&gt;\n           &lt;CardContent&gt;\n                &lt;Typography\n                    color=\"textSecondary\"\n                    gutterBottom\n                    dangerouslySetInnerHTML={{__html: post.title.rendered}} \/&gt;\n                &lt;Typography\n                    variant=\"body2\"\n                    component=\"p\"\n                    dangerouslySetInnerHTML={{__html: post.content.rendered}} \/&gt;\n            &lt;\/CardContent&gt;\n        &lt;\/Card&gt;\n      &lt;\/Grid&gt;\n     ))}\n    &lt;\/Grid&gt;\n );\n}<\/pre><p>Contoh di atas menggunakan <a href=\"https:\/\/reactjs.org\/docs\/hooks-overview.html\" target=\"_blank\" rel=\"noopener\">React Hook<\/a>&nbsp;<code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">useEffect<\/code> dan <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">useState<\/code>. Hook pertama mendeklarasikan array tulisan dan melakukan panggilan untuk mengupdatenya, sedangkan yang kedua berfungsi untuk mengambil kode.<\/p><p>\n\n\n    <p class=\"warning\">\n        <strong>Peringatan!<\/strong> Saat menggunakan <strong>dangerouslySetInnerHTML<\/strong> dalam kode Anda, waspadai risiko berikut ini:<br>\n1. <strong>Kerentanan Keamanan<\/strong>: Penggunaan yang tidak tepat bisa membuat aplikasi Anda terkena serangan <strong>XSS (cross-site scripting)<\/strong>.<br>\n2. <strong>Pengelolaan Kode<\/strong>: Akan lebih sulit untuk mengelola dan mendebug kode ketika HTML dimasukkan secara langsung.    <\/p>\n    \n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-cara-membuat-jenis-postingan-kustom-dengan-react\">Cara membuat jenis postingan kustom dengan React<\/h2><p>Anda juga bisa menggunakan React untuk membuat <a href=\"\/id\/tutorial\/cara-membuat-custom-post-types\">jenis postingan kustom WordPress<\/a>. Namun, ada beberapa tool yang perlu Anda instal dulu agar prosesnya lebih mudah dan lebih lancar.<\/p><p>Pertama, Anda perlu menambahkan plugin WordPress <a href=\"https:\/\/wordpress.org\/plugins\/custom-post-type-ui\/\" target=\"_blank\" rel=\"noopener\">Custom Post Type UI<\/a>.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"922\" height=\"293\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/banner-custom-post-type-ui.png\/public\" alt=\"banner plugin custom post type ui\" class=\"wp-image-44393\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/banner-custom-post-type-ui.png\/w=922,fit=scale-down 922w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/banner-custom-post-type-ui.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/banner-custom-post-type-ui.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/banner-custom-post-type-ui.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 922px) 100vw, 922px\" \/><\/figure><\/div><p>Plugin ini akan memudahkan Anda membuat jenis postingan kustom di WordPress.<\/p><p>Selain itu, Anda bisa menginstal <a href=\"https:\/\/wordpress.org\/plugins\/advanced-custom-fields\/\" target=\"_blank\" rel=\"noopener\">Advanced Custom Fields (ACF)<\/a>.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1024\" height=\"332\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/advanced-custom-field.jpg\/public\" alt=\"banner plugin advanced custom field\" class=\"wp-image-44394\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/advanced-custom-field.jpg\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/advanced-custom-field.jpg\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/advanced-custom-field.jpg\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/advanced-custom-field.jpg\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><p>Plugin ini juga tersedia gratis, yang bisa Anda gunakan untuk membuat dan menambahkan kolom kustom ke jenis postingan kustom Anda. Kemudian, instal <a href=\"https:\/\/wordpress.org\/plugins\/acf-to-rest-api\/\" target=\"_blank\" rel=\"noopener\">ACF to REST API<\/a> agar kolom kustom tersedia untuk jenis postingan Anda.<\/p><p>Pertama, buka <strong>CPT UI<\/strong> &rarr; <strong>Add\/Edit Post Types<\/strong> (Tambahkan\/Edit Tipe Postingan) dari area admin Anda. Dalam contoh ini, kita akan menggunakan nama &ldquo;Books&rdquo;. Kita juga akan memilih opsi untuk mengisi kolom lainnya secara otomatis.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69fce1745854b\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"550\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/edit-post-type-wordpress.png\/public\" alt=\"Bagian Tambah\/Edit Jenis Postingan Baru di Dashboard WordPress.\" class=\"wp-image-44395\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/edit-post-type-wordpress.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/edit-post-type-wordpress.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/edit-post-type-wordpress.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/edit-post-type-wordpress.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Di bawah bagian <strong>Show in REST API<\/strong> (Tampilkan di REST API), atur opsi ke <strong>True<\/strong> (Benar) dan masukkan &ldquo;Books&rdquo; sebagai slug dasar REST API.<\/p><p>Di bawah <strong>Supports<\/strong> (Dukungan), centang kotak <strong>Author<\/strong> (Penulis) dan <strong>Custom fields<\/strong> (Bidang kustom). Klik <strong>Save Post Type<\/strong> (Simpan Tipe Postingan) setelah Anda selesai.<\/p><p>Selanjutnya, kita bisa membuat kolom khusus untuk jenis postingan kustom tersebut. Arahkan kursor ke <strong>Custom Fields<\/strong> (Bidang Kustom) &rarr; <strong>Add New<\/strong> (Tambah Baru), lalu masukkan judul yang sesuai seperti &ldquo;Book Info&rdquo;.<\/p><p>Anda bisa mengklik <strong>Add Field<\/strong> (Tambah Bidang), lalu mengisi label, nama, dan jenis kolom.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69fce1745a986\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"506\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/tambahkan-kolom-di-wordpress.png\/public\" alt=\"Menambahkan grup kolom baru di dashboard WordPress.\" class=\"wp-image-44396\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/tambahkan-kolom-di-wordpress.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/tambahkan-kolom-di-wordpress.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/tambahkan-kolom-di-wordpress.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/05\/tambahkan-kolom-di-wordpress.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Di bawah <strong>Location<\/strong> (Lokasi), Anda bisa mengatur jenis postingan agar sama dengan jenis postingan kustom <strong>book<\/strong>. Setelah selesai, pilih <strong>Publish<\/strong> (Terbitkan) untuk mengaktifkan kolom kustom.<\/p><p>Selanjutnya, buka <strong>My Books<\/strong> &rarr; <strong>Add New<\/strong> (Tambah Baru), lalu masukkan judul, ringkasan, dan gambar unggulannya. Anda bisa mengulang proses ini berapa kali pun sesuai kebutuhan.<\/p><p>Sekarang, masukkan perintah-perintah berikut ini dari terminal dengan menjalankannya satu per satu:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npx create-react-app frontend\ncd frontend\nnpm i axios\nnpm start<\/pre><p>Selanjutnya, di dalam&nbsp;<code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">src<\/code>, Anda bisa membuat folder bernama <em>komponen<\/em>, diikuti dengan file bernama <strong>books.js<\/strong>. Setelah selesai, masukkan kode berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import React, { Component } from 'react';\nimport axios from 'axios';\nexport class Books extends Component {\n   state = {\n       books: [],\n       isLoaded: false\n   }\n componentDidMount () {\n   axios.get('http:\/\/localhost:3000\/wp-json\/wp\/v2\/books')\n       .then(res =&gt; this.setState({\n           books: res.data,\n           isLoaded: true\n       }))\n       .catch(err =&gt; console.log(err))\n   }\n   render() {\n      console.log(this.state);\n       return (\n           &lt;div&gt;\n             \n           &lt;\/div&gt;\n       )\n   }\n}\nexport default Books;<\/pre><p>Di file <strong>App.js<\/strong>, masukkan skrip berikut ini:<\/p><p>mengimpor React dari &lsquo;react&rsquo;;<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import React from 'react';\nimport '.\/App.css';\nimport Books from '.\/components\/Books';\nfunction App() {\n return (\n   &lt;div className=\"App\"&gt;\n    &lt;Books&gt;\n   &lt;\/div&gt;\n );\n}\nexport default App;<\/pre><p>Sekarang, Anda bisa menjalankan perintah <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">npm start<\/code> di terminal, yang akan membuka aplikasi React. Anda bisa melihat konsol data &ldquo;Book&rdquo; ketika membukanya di browser. Tampilkan setiap judul dengan menetapkan pemetaan untuk setiap buku.<\/p><p>Di <strong>Book.js<\/strong>, masukkan kode berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">render() {\n      const {books, isLoaded} = this.state;\n       return (\n           &lt;div&gt;\n              {books.map(book =&gt; &lt;h4&gt;{book.title.rendered}&lt;\/h4&gt;)}\n           &lt;\/div&gt;\n       )\n   }<\/pre><p>Anda juga bisa memisahkan koleksi beberapa buku menjadi satu komponen buku. Untuk melakukannya, buat file di dalam <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">src\/components<\/code>. Selain itu, Anda bisa menambahkan CSS khusus untuk menerapkan gaya pada jenis postingan kustom (app.css).<\/p><h2 class=\"wp-block-heading\" id=\"h-cara-membuat-tema-wordpress-dengan-react-native-2-metode\">Cara membuat tema WordPress dengan React Native (2 metode)<\/h2><p>Selain tutorial di atas, Anda bisa <a href=\"\/id\/tutorial\/cara-membuat-tema-wordpress\">membuat tema WordPress<\/a> menggunakan React. Ada banyak metode yang bisa Anda terapkan, dan kami akan menjelaskan dua di antaranya:<\/p><h3 class=\"wp-block-heading\" id=\"h-1-membuat-tema-react-wordpress-menggunakan-wp-scripts\">1. Membuat tema React WordPress menggunakan WP Scripts<\/h3><p>Pada aplikasi React biasa, Anda perlu mengimpor React di bagian atas file. Namun, WordPress sudah dilengkapi dengan library React dan ReactDOM yang diekspor langsung ke <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">wp.element<\/code>, yang merupakan global window object.<\/p><p>Apabila sudah pernah menggunakan React, Anda mungkin pernah menggunakan Create React App untuk menjalankan server pengembangan Anda. Namun, hal ini tidak perlu dilakukan dengan WordPress.<\/p><p>Tim WordPress sudah menyiapkan paket <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">wp-scripts<\/code> dari <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">react-scripts<\/code> yang digunakan dengan Create React App. WP Scripts menyertakan perintah-perintahnya secara default.<\/p><p>Untuk memuat React dalam tema Anda, buka file <strong>functions.php<\/strong> tema, lalu tambahkan potongan kode berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Enqueue Theme JS w React Dependency\nadd_action( 'wp_enqueue_scripts', 'my_enqueue_theme_js' );\nfunction my_enqueue_theme_js() {\n  wp_enqueue_script(\n    'my-theme-frontend',\n    get_stylesheet_directory_uri() . '\/build\/index.js',\n    ['wp-element'],\n    time(), \/\/ Change this to null for production\n    true\n  );\n}<\/pre><p>Langkah ini akan menambahkan&nbsp;<code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">wp-element<\/code> sebagai dependensi file JavaScript Anda. Selanjutnya, kita perlu menyiapkan file<strong> package.json<\/strong>. Dari root tema WordPress Anda, jalankan perintah berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npm init<\/pre><p>Setelah selesai, jalankan perintah berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npm install @wordpress\/scripts --save-dev<\/pre><p>WP Scripts akan didownload ke <strong>node_modules <\/strong>sehingga bisa digunakan di dalam command-line Anda. Untuk memetakan WP Scripts ke skrip NPM, Anda bisa menelusuri file <strong>package.json<\/strong>, memuat pengaturan &ldquo;scripts&rdquo;, dan menggantinya dengan contoh berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n  \"name\": \"myreacttheme\",\n  \"version\": \"1.0.0\",\n  \"description\": \"My WordPress theme with React\",\n  \"main\": \"src\/index.js\",\n  \"dependencies\": {},\n  \"devDependencies\": {\n    \"@wordpress\/scripts\": \"^5.1.0\"\n  },\n  \"scripts\": {\n    \"build\": \"wp-scripts build\",\n    \"check-engines\": \"wp-scripts check-engines\",\n    \"check-licenses\": \"wp-scripts check-licenses\",\n    \"lint:css\": \"wp-scripts lint-style\",\n    \"lint:js\": \"wp-scripts lint-js\",\n    \"lint:pkg-json\": \"wp-scripts lint-pkg-json\",\n    \"start\": \"wp-scripts start\",\n    \"test:e2e\": \"wp-scripts test-e2e\",\n    \"test:unit\": \"wp-scripts test-unit-js\"\n  },\n  \"author\": \"\",\n  \"license\": \"1 GNU V2+, MIT\"\n}<\/pre><p>Selanjutnya, Anda bisa menjalankan perintah berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npm start<\/pre><p>Perintah ini akan mencari file yang diimpor dari <strong>src\/index.js<\/strong> dan menambahkannya ke <strong>build\/index.js<\/strong> setiap kali ada file yang diubah.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"\/id\/wordpress-hosting\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/06\/ID-New-WP_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-37614\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/06\/ID-New-WP_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/06\/ID-New-WP_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/06\/ID-New-WP_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/06\/ID-New-WP_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div><h3 class=\"wp-block-heading\" id=\"h-2-membuat-tema-react-wordpress-menggunakan-create-react-wptheme\">2. Membuat tema React WordPress menggunakan Create-React-WPTheme<\/h3><p>Metode lainnya adalah dengan menggunakan <a href=\"https:\/\/github.com\/devloco\/create-react-wptheme\" target=\"_blank\" rel=\"noopener\">create-react-wptheme<\/a> dari devloco. Paket ini mirip dengan create-react-app, tapi paket ini menggunakan WordPress, bukan webpack sebagai server pengembangannya. Anda juga akan memiliki akses ke semua fungsi intinya, hook, tindakan, filter, dan lain-lain.<\/p><p>Untuk menyiapkannya, Anda bisa memulai terminal (atau git bash) pada instalan WordPress lokal Anda, lalu ketik perintah berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npx create-react-wptheme barebones<\/pre><p><strong>&ldquo;Barebones&rdquo; <\/strong>adalah nama temanya; Anda bisa menggantinya dengan nama tema apa pun yang Anda inginkan.<\/p><p>Selanjutnya, akan muncul pesan bahwa instalan Anda telah membuat folder root dan direktori &ldquo;react-src&rdquo; di dalamnya. Direktori ini penting karena akan berisi kode yang belum dikompilasi.<\/p><p>Selanjutnya, tambahkan <strong>styles.css<\/strong><em>, <\/em><strong>index.php<\/strong>, dan file-file lain yang diperlukan untuk memvalidasinya. Di terminal Anda, masukkan perintah berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cd barebones\/react-src\nnpm run wpstart<\/pre><p>Sekarang, saat Anda membuka <strong>wp-admin<\/strong> &rarr; <strong>themes<\/strong> (tema), Anda akan melihat tema baru Anda. Klik tombol <strong>Activate<\/strong> (Aktifkan), lalu kembali ke terminal dan jalankan perintah berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npm run wpstart<\/pre><p>Langkah ini akan secara otomatis membuka tab browser baru. Perlu diingat bahwa file-file yang berada di dalam folder root (semua yang ada di luar react-src) tidak boleh diedit. File-file ini berisi versi kompilasi kode yang diperlukan untuk WordPress dan React.<\/p><p>Untuk membuat tema baru, Anda bisa menggunakan kode berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npx create-react-wptheme my_react_theme<\/pre><p>Anda bisa mengganti &ldquo;my_react_theme&rdquo; sesuai keinginan Anda. Selanjutnya, masukkan perintah berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cd my_react_theme\/react-src\nnpm run start<\/pre><p>Jangan lupa untuk menggantinya dengan nama yang sama seperti pada langkah sebelumnya. Langkah ini akan menyiapkan tema yang muncul di area admin.<\/p><p>Setelah selesai, Anda perlu menggunakan perintah build untuk memindahkannya ke versi produksi. Untuk melakukannya, buka prompt perintah Anda, buka folder <strong>react-src<\/strong> tema, lalu jalankan perintah berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npm run build<\/pre><p>Proses ini akan mengoptimalkan file Anda yang berada di dalam folder. Setelah itu, Anda bisa menerapkannya di server Anda.<\/p><h2 class=\"wp-block-heading\" id=\"h-cara-menambahkan-react-ke-template-halaman-kustom\">Cara menambahkan React ke template halaman kustom<\/h2><p>Untuk <a href=\"\/id\/tutorial\/cara-membuat-child-theme-wordpress\">membuat child theme WordPress<\/a> menggunakan React, prosesnya juga tidak terlalu berbeda. Anda bisa menambahkan React ke template halaman kustom.<\/p><p>Mari mulai dengan struktur tema standar dulu:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/build\n\/src\n\/-- index.js\nfunctions.php\npackage.json\npage-react.php\nstyle.css<\/pre><p>Selanjutnya, tambahkan kode berikut ini ke file <strong>functions.php<\/strong> tema:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nadd_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );\nfunction my_theme_enqueue_styles() {\n \n  $parent_style = 'twentytwenty-style'; \n    \n  wp_enqueue_style( $parent_style, get_template_directory_uri() . '\/style.css' );\n    \n  wp_enqueue_style( 'child-style',\n    get_stylesheet_directory_uri() . '\/style.css',\n    [ $parent_style ],\n    time() \/\/For production use wp_get_theme()-&gt;get('Version')\n  );\n\n  wp_enqueue_script(\n    'my-theme-frontend',\n    get_stylesheet_directory_uri() . '\/build\/index.js',\n    ['wp-element'],\n    time() \/\/For production use wp_get_theme()-&gt;get('Version')        \n  );\n  \n}<\/pre><p>Anda juga perlu menambahkan beberapa kode ke file <strong>style.css<\/strong> Anda seperti berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*\n Theme Name:   Twenty Twenty Child\n Description:  Twenty Twenty Child Theme\n Author:       Your Name\n Author URI:   https:\/\/yourwebsite.com\n Template:     twentytwenty\n Version:      0.9.0\n License:      GNU General Public License v2 or later\n License URI:  http:\/\/www.gnu.org\/licenses\/gpl-2.0.html\n Text Domain:  twentytwentychild\n*\/<\/pre><p>Selanjutnya, buat template halaman kustom dasar <strong>page-react.php<\/strong> dengan contoh berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;? php\n\/**\n * Template Name: React Template\n *\/\nget_header();\n?&gt;\n\n&lt;main id=\"site-content\" role=\"main\"&gt;\n  &lt;article class=\"post-2 page type-page status-publish hentry\"&gt;\n    &lt;?php get_template_part( 'template-parts\/entry-header' ); ?&gt;\n    &lt;div class=\"post-inner thin\"&gt;\n      &lt;div class=\"entry-content\"&gt;        \n\n        &lt;div id=\"react-app\"&gt;&lt;\/div&gt;&lt;!-- #react-app --&gt;\n\n      &lt;\/div&gt;&lt;!-- .entry-content --&gt;\n    &lt;\/div&gt;&lt;!-- .post-inner --&gt;\n  &lt;\/article&gt;&lt;!-- .post --&gt;\n&lt;\/main&gt;&lt;!-- #site-content --&gt;\n\n&lt;?php get_template_part( 'template-parts\/footer-menus-widgets' ); ?&gt;\n&lt;?php get_footer(); ?&gt;<\/pre><p>Sekarang Anda bisa membuat halaman baru di WordPress, lalu memilih <strong>React Template<\/strong> sebagai template halaman.<\/p><h2 class=\"wp-block-heading\" id=\"h-cara-menggunakan-react-dalam-aplikasi\">Cara menggunakan React dalam aplikasi<\/h2><p>Apabila ingin menggunakan React di aplikasi yang sudah ada, Anda bisa menambahkan <a href=\"\/id\/tutorial\/apa-itu-cdn\">CDN (content delivery network)<\/a> secara langsung ke file HTML Anda.<\/p><p>Buka halaman HTML tempat Anda ingin menambahkan React. Sisipkan bagian kosong tag <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">&lt;div&gt;<\/code>, yang akan membuat area tempat Anda bisa merender komponen. Dalam contoh ini, kita akan membuat tombol.<\/p><p>Selanjutnya, masukkan tiga&nbsp;tag <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">&lt;script&gt;<\/code> pada halaman tersebut sebelum tag <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">&lt;\/body&gt;<\/code> penutup. Dua tag pertama akan digunakan untuk memuat React, dan yang ketiga akan memuat kode komponen Anda.<\/p><p>Sekarang, dalam folder yang sama dengan halaman HTML Anda, buat file baru dan beri nama <strong>button.js<\/strong> (atau nama lain sesuai elemen yang Anda tambahkan). Dalam file tersebut, salin dan tempelkan kode berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">'use strict';\nconst e = React.createElement;\nclass Button extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = { clicked: false };\n  }\n  render() {\n    if (this.state.clicked) {\n      return 'You pressed this button.';\n    }\n    return e(\n      'button',\n      { onClick: () =&gt; this.setState({ clicked: true }) },\n      'Press Me'\n    );\n  }\n}<\/pre><p>Langkah ini akan membuat komponen tombol yang menampilkan pesan setelah diklik. Untuk menggunakan tombol ini di halaman HTML Anda, Anda bisa menambahkan potongan kode berikut di bagian bawah file <strong>button.js<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const domContainer = document.querySelector('#button_container');\nReactDOM.render(e(Button), domContainer);<\/pre><p>Proses ini akan memanggil kembali container <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">&lt;div&gt;<\/code> yang tadi Anda tambahkan ke halaman HTML. Kemudian, komponen tombol React akan dirender.<\/p><p>Anda juga bisa menggunakan React untuk membuat aplikasi React kosong dari nol. Caranya, gunakan solusi Create React App yang tadi sudah kita pelajari, yang sangat berguna untuk membuat aplikasi satu halaman.<\/p><p>Mulai prosesnya dengan menjalankan perintah berikut ini di terminal:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npx create-react-app my-app<\/pre><p>Ingat, Anda bisa mengubah &ldquo;my-app&rdquo; dengan nama apa pun yang Anda inginkan. Untuk menjalankannya, telusuri folder aplikasi dengan menjalankan perintah&nbsp;<code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">cd my-app<\/code>, diikuti dengan <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">npm start<\/code>.<\/p><p>Aplikasi kemudian akan berjalan dalam mode pengembangan. Anda bisa melihatnya dengan mengakses <strong>http:\/\/localhost:3000<\/strong> di browser.<\/p><h2 class=\"wp-block-heading\" id=\"h-kesimpulan\">Kesimpulan<\/h2><p>Menangani proyek WordPress React sebenarnya tidak begitu sulit, bahkan meskipun Anda masih pemula. Namun, sebaiknya pelajari dulu cara kerja framework JavaScript dengan WordPress dan WP REST API agar prosesnya lebih lancar.<\/p><p>Nah, apabila sudah memahami dasar-dasar JavaScript, HTML, dan CSS, Anda tidak perlu mempelajari React Native dari nol. Seperti yang sudah kita pelajari di artikel ini, Anda bisa menggunakan React untuk membuat aplikasi satu halaman, serta tema dan template halaman WordPress kustom.<\/p><p>Mudah-mudahan panduan ini bisa membantu Anda lebih memahami React dan kemampuannya untuk pengembangan web. Kalau masih ada pertanyaan, yuk sampaikan lewat komentar!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress adalah CMS (content management system) canggih untuk membuat berbagai jenis website, mulai dari website sederhana hingga toko online yang kompleks. Untuk mengintegrasikan kode PHP platform ini dengan JavaScript, Anda bisa memanfaatkan WP REST API dan WordPress React. React, yang dikembangkan oleh Facebook, adalah library UI (user interface) untuk membuat aplikasi lintas platform yang bisa [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/id\/tutorial\/panduan-wordpress-react\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":190,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Cara menggunakan React Native dengan WordPress (%currentyear%)","rank_math_description":"Menggunakan React dengan WordPress bisa memudahkan berbagai alur kerja Anda. Yuk, baca tutorial WordPress dengan React Native di artikel ini!","rank_math_focus_keyword":"wordpress react","footnotes":""},"categories":[4859],"tags":[],"class_list":["post-44385","post","type-post","status-publish","format-standard","hentry","category-wordpress"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/wordpress-react","default":0},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/wordpress-react","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/react-wordpress","default":0},{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/wordpress-react","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/panduan-wordpress-react","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/wordpress-react","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/a-beginners-guide-to-wordpress-react-development-projects","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/a-beginners-guide-to-wordpress-react-development-projects","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/wordpress-react","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/wordpress-react","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wordpress-react","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wordpress-react","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/wordpress-react","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/wordpress-react","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/wordpress-react","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/wordpress-react","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/44385","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/users\/190"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/comments?post=44385"}],"version-history":[{"count":19,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/44385\/revisions"}],"predecessor-version":[{"id":44411,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/44385\/revisions\/44411"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/media?parent=44385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/categories?post=44385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/tags?post=44385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}