{"id":49153,"date":"2020-01-06T21:28:21","date_gmt":"2020-01-06T13:28:21","guid":{"rendered":"https:\/\/www.hongkiat.com\/blog\/?p=49153"},"modified":"2020-01-03T14:49:17","modified_gmt":"2020-01-03T06:49:17","slug":"intro-to-headless-cms","status":"publish","type":"post","link":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/","title":{"rendered":"An Introduction to Headless CMS"},"content":{"rendered":"<p>A headless CMS is a content management system (CMS) that\u2019s separated from the front-end. In other words, it\u2019s a CMS that provides only content through the API either using the RESTful or GraphQL. The term \u201cheadless\u201d comes from the concept of removing the \u201chead\u201d (front-end) from the \u201cbody\u201d (backend or the CMS) that provides the content.<\/p>\n<p>If you\u2019re familiar with <a target=\"_blank\" href=\"https:\/\/wordpress.org\/\" rel=\"noopener noreferrer\">WordPress<\/a>, or other traditional monolithic CMS such as <a target=\"_blank\" href=\"https:\/\/www.drupal.org\/\" rel=\"noopener noreferrer nofollow\">Drupal<\/a> or <a target=\"_blank\" href=\"https:\/\/www.joomla.org\/\" rel=\"noopener noreferrer\">Joomla<\/a>, then this guide will be easy for you as we\u2019ll be creating the front-end through their templating system usually using their built-in functions and the same language that the CMS is built upon. Let\u2019s get started.<\/p>\n<h2>Why building Headless CMS?<\/h2>\n<p>Before getting into the guide, I would like to highlight the many advantages of building your site with the Headless CMS setup.<\/p>\n<p>Firstly, with Headless CMS, you can hide the backend used on the site. As the backend is unknown or hardly discoverable, this may keep your site from being a target of attack like brute-force attack which is common if you\u2019re using open-source CMS like WordPress.<\/p>\n<p>Secondly, Headless CMS may help in your site\u2019s fast loading speed as it will only make a request to the API and render the content on the fly instead of reloading the whole page when the user is navigating to a new page.<\/p>\n<p>Thirdly, the developers may be able to break free from the CMS limitation on rendering the content. If the API allows editing the content, for example, the developer may be able to build a tool on the front-end for quick editing.<\/p>\n<p>And last, but not the least, with Headless CMS, we can easily deliver content to various mediums other than the web such as; mobile and desktop app, IoT and IFTTT, etc. The developers can also use any language to render the content. So it can improve the overall experience for both the developers and the users.<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/intro-to-headless-cms\/wp-headless-illustration.jpg\" alt=\"Diagram of Headless CMS\" width=\"750\" height=\"480\"><\/figure>\n<p><small>(All icons by <a target=\"_blank\" href=\"https:\/\/icons8.com\" rel=\"noopener noreferrer\">Icons8<\/a>)<\/small><\/p>\n<h2>Headless CMS downsides<\/h2>\n<p>As good as it sounds, Headless CMS setup also comes with its downsides which you need to consider as well before jumping the ship.<\/p>\n<p>First of all, there might be a high barrier to entry due to the technological knowledge requires to run Headless CMS setup. You will need two different domains to host the backend and the front-end, both domains will also need SSL certificate installed, and integrating 3rd-party service into the mix, and so forth.<\/p>\n<p>Second of all, if you\u2019re using a traditional CMS like WordPress, many plugins might not work out of the box. You will need to work it out yourself so the plugin data is accessible through the API.<\/p>\n<p>Thankfully, with the vast community in WordPress, plugins are available to address this downside, for example, <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/acf-to-rest-api\/\" rel=\"noopener noreferrer\">ACF to REST API<\/a> to add custom field data added with ACF to the API, and <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/wp-rest-yoast-meta\/\" rel=\"noopener noreferrer\">WP REST Yoast Meta<\/a> which will add the metadata generated by Yoast SOE plugin to the REST API as well.<\/p>\n<h2>How to build Headless CMS?<\/h2>\n<p>There are plenty of choices today to build a Headless CMS setup. <a target=\"_blank\" href=\"https:\/\/www.contentful.com\/\" rel=\"noopener noreferrer\">Contenful<\/a>, <a target=\"_blank\" href=\"https:\/\/dotcms.com\/\" rel=\"noopener noreferrer\">dotCMS<\/a>, and <a target=\"_blank\" href=\"https:\/\/buttercms.com\/\" rel=\"noopener noreferrer\">ButterCMS<\/a> are among prominent names in content API.<\/p>\n<p>These services only provide the API, and the interface to manage the content. It is up to you how you\u2019d like to present the content. These type of services usually provide an SDK for various programming languages to make it easy for developers to connect and consume the API.<\/p>\n<p>Furthermore, according to <a target=\"_blank\" href=\"https:\/\/headlesscms.org\/\" rel=\"noopener noreferrer\">headlesscms.org<\/a>, there are now around 50 of both open-sourced and closed-source CMS to get you up with Headless CMS setup. The list does not include traditional CMS like WordPress, Drupal and Magento which now have content API built-in.<\/p>\n<h2>Using WordPress as a Headless CMS<\/h2>\n<p>WordPress has REST API built-in since the version 4.4. The API includes endpoints to retrieve the post list and each post\u2019s content, and edit the post. Once you have this API, you can start creating a Headless setup.<\/p>\n<p>In this guide, instead of starting from scratch, we will be using <a target=\"_blank\" href=\"https:\/\/github.com\/postlight\/headless-wp-starter\" rel=\"noopener noreferrer\">Headless WP Starter<\/a> which already has everything set up for us. It includes WordPress installation as well as the front-end setup that renders the content using <a target=\"_blank\" href=\"https:\/\/reactjs.org\/\" rel=\"noopener noreferrer\">React.js<\/a>.<\/p>\n<ol>\n<li><strong>Headless WP Starter<\/strong> requires Docker. So assuming you haven\u2019t had it installed in your computer, you can head over to these instructions to install Docker and Docker Compose on Windows and macOS.<\/li>\n<\/ol><ul>\n<li><a target=\"_blank\" href=\"https:\/\/docs.docker.com\/v17.09\/docker-for-mac\/install\/\" rel=\"noopener noreferrer\">Install Docker for Mac<\/a><\/li>\n<li><a target=\"_blank\" href=\"https:\/\/docs.docker.com\/v17.09\/docker-for-windows\/install\/\" rel=\"noopener noreferrer\">Install Docker for Windows<\/a><\/li>\n<\/ul>\n<li>Next, we create a directory to host our sites.<\/li>\n<pre>\r\nmkdir wp-headless && cd $_\r\n<\/pre>\n<li>Then, we clone <strong>Headless WP Starter<\/strong> from the repository into the directory we\u2019ve just created.<\/li>\n<pre>\r\ngit clone https:\/\/github.com\/postlight\/headless-wp-starter .\r\n<\/pre>\n<li>Lastly, we run the following command to get the site up and running.<\/li>\n\n<pre>\r\ndocker-compose up -d\r\n<\/pre>\n<p>This process will download several Docker images from the Docker registry and spin up the containers, which may take quite some time to complete.<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/intro-to-headless-cms\/wp-headless-docker-compose-up-finished.jpg\" alt=\"\" width=\"750\" height=\"268\"><\/figure>\n<p>When it\u2019s done, we will be able to access the site from the <code>localhost:3000<\/code>, as we shown below.<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/intro-to-headless-cms\/wp-headless-nav.gif\" alt=\"Loading WP Headless in browser\" width=\"750\" height=\"421\"><\/figure>\n<h2>Final thoughts<\/h2>\n<p>I think that Headless CMS is preferable when the CMS theme or template is not enough to create the front-end experience you\u2019d like to have, or when the content will be distributed in various channels aside from the Web. For a simple site, I believe that using a monilithic CMS is still the easiest way to go.<\/p>\n<p>Anyway, I hope you find this article helpful to get into Headless CMS.<\/p>","protected":false},"excerpt":{"rendered":"<p>A headless CMS is a content management system (CMS) that\u2019s separated from the front-end. In other words, it\u2019s a CMS that provides only content through the API either using the RESTful or GraphQL. The term \u201cheadless\u201d comes from the concept of removing the \u201chead\u201d (front-end) from the \u201cbody\u201d (backend or the CMS) that provides the&hellip;<\/p>\n","protected":false},"author":113,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3392],"tags":[511],"topic":[4520],"class_list":["entry-content","is-maxi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>An Introduction to Headless CMS - Hongkiat<\/title>\n<meta name=\"description\" content=\"A headless CMS is a content management system (CMS) that&#039;s separated from the front-end. In other words, it&#039;s a CMS that provides only content through the\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An Introduction to Headless CMS\" \/>\n<meta property=\"og:description\" content=\"A headless CMS is a content management system (CMS) that&#039;s separated from the front-end. In other words, it&#039;s a CMS that provides only content through the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/\" \/>\n<meta property=\"og:site_name\" content=\"Hongkiat\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hongkiatcom\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-06T13:28:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/assets.hongkiat.com\/uploads\/intro-to-headless-cms\/wp-headless-illustration.jpg\" \/>\n<meta name=\"author\" content=\"Thoriq Firdaus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tfirdaus\" \/>\n<meta name=\"twitter:site\" content=\"@hongkiat\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thoriq Firdaus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/\"},\"author\":{\"name\":\"Thoriq Firdaus\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\"},\"headline\":\"An Introduction to Headless CMS\",\"datePublished\":\"2020-01-06T13:28:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/\"},\"wordCount\":887,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/intro-to-headless-cms\\\/wp-headless-illustration.jpg\",\"keywords\":[\"Web Developers\"],\"articleSection\":[\"Coding\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/\",\"name\":\"An Introduction to Headless CMS - Hongkiat\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/intro-to-headless-cms\\\/wp-headless-illustration.jpg\",\"datePublished\":\"2020-01-06T13:28:21+00:00\",\"description\":\"A headless CMS is a content management system (CMS) that's separated from the front-end. In other words, it's a CMS that provides only content through the\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/#primaryimage\",\"url\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/intro-to-headless-cms\\\/wp-headless-illustration.jpg\",\"contentUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/intro-to-headless-cms\\\/wp-headless-illustration.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/intro-to-headless-cms\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An Introduction to Headless CMS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"name\":\"Hongkiat\",\"description\":\"Tech and Design Tips\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\",\"name\":\"Hongkiat.com\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"contentUrl\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"width\":1200,\"height\":799,\"caption\":\"Hongkiat.com\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hongkiatcom\",\"https:\\\/\\\/x.com\\\/hongkiat\",\"https:\\\/\\\/www.pinterest.com\\\/hongkiat\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\",\"name\":\"Thoriq Firdaus\",\"description\":\"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.\",\"sameAs\":[\"https:\\\/\\\/thoriq.com\",\"https:\\\/\\\/x.com\\\/tfirdaus\"],\"jobTitle\":\"Web Developer\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/author\\\/thoriq\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"An Introduction to Headless CMS - Hongkiat","description":"A headless CMS is a content management system (CMS) that's separated from the front-end. In other words, it's a CMS that provides only content through the","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/","og_locale":"en_US","og_type":"article","og_title":"An Introduction to Headless CMS","og_description":"A headless CMS is a content management system (CMS) that's separated from the front-end. In other words, it's a CMS that provides only content through the","og_url":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/","og_site_name":"Hongkiat","article_publisher":"https:\/\/www.facebook.com\/hongkiatcom","article_published_time":"2020-01-06T13:28:21+00:00","og_image":[{"url":"https:\/\/assets.hongkiat.com\/uploads\/intro-to-headless-cms\/wp-headless-illustration.jpg","type":"","width":"","height":""}],"author":"Thoriq Firdaus","twitter_card":"summary_large_image","twitter_creator":"@tfirdaus","twitter_site":"@hongkiat","twitter_misc":{"Written by":"Thoriq Firdaus","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/#article","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/"},"author":{"name":"Thoriq Firdaus","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807"},"headline":"An Introduction to Headless CMS","datePublished":"2020-01-06T13:28:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/"},"wordCount":887,"publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/intro-to-headless-cms\/wp-headless-illustration.jpg","keywords":["Web Developers"],"articleSection":["Coding"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/","url":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/","name":"An Introduction to Headless CMS - Hongkiat","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/#primaryimage"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/intro-to-headless-cms\/wp-headless-illustration.jpg","datePublished":"2020-01-06T13:28:21+00:00","description":"A headless CMS is a content management system (CMS) that's separated from the front-end. In other words, it's a CMS that provides only content through the","breadcrumb":{"@id":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/#primaryimage","url":"https:\/\/assets.hongkiat.com\/uploads\/intro-to-headless-cms\/wp-headless-illustration.jpg","contentUrl":"https:\/\/assets.hongkiat.com\/uploads\/intro-to-headless-cms\/wp-headless-illustration.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hongkiat.com\/blog\/intro-to-headless-cms\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hongkiat.com\/blog\/"},{"@type":"ListItem","position":2,"name":"An Introduction to Headless CMS"}]},{"@type":"WebSite","@id":"https:\/\/www.hongkiat.com\/blog\/#website","url":"https:\/\/www.hongkiat.com\/blog\/","name":"Hongkiat","description":"Tech and Design Tips","publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hongkiat.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hongkiat.com\/blog\/#organization","name":"Hongkiat.com","url":"https:\/\/www.hongkiat.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","contentUrl":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","width":1200,"height":799,"caption":"Hongkiat.com"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hongkiatcom","https:\/\/x.com\/hongkiat","https:\/\/www.pinterest.com\/hongkiat\/"]},{"@type":"Person","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807","name":"Thoriq Firdaus","description":"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.","sameAs":["https:\/\/thoriq.com","https:\/\/x.com\/tfirdaus"],"jobTitle":"Web Developer","url":"https:\/\/www.hongkiat.com\/blog\/author\/thoriq\/"}]}},"jetpack_featured_media_url":"https:\/\/","jetpack_shortlink":"https:\/\/wp.me\/p4uxU-cMN","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/49153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/users\/113"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/comments?post=49153"}],"version-history":[{"count":1,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/49153\/revisions"}],"predecessor-version":[{"id":49154,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/49153\/revisions\/49154"}],"wp:attachment":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/media?parent=49153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/categories?post=49153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/tags?post=49153"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/topic?post=49153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}