{"id":137,"date":"2026-07-23T10:58:23","date_gmt":"2026-07-23T10:58:23","guid":{"rendered":"https:\/\/orionpulse.in\/blog\/?p=137"},"modified":"2026-07-23T12:45:42","modified_gmt":"2026-07-23T12:45:42","slug":"blog-page-setup-on-wordpress","status":"publish","type":"post","link":"https:\/\/orionpulse.in\/blog\/blog-page-setup-on-wordpress\/","title":{"rendered":"Blog page setup on WordPress"},"content":{"rendered":"\n<p class=\"has-medium-font-size wp-block-paragraph\"> In this blog, I am going to share how I create a setup for a blog page from WordPress. The step-by-step implementation of WordPress on Hostinger or the traditional way.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong> Challenges<\/strong><br> <strong>a) What problem did I face?<br> b) Where do you have to be careful?<br> c) Why do we need WordPress when we have the sanity and others?<\/strong><br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1.  Architecture Overview<\/strong><\/h2>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Approach<\/strong><\/th><th><strong>Best For<\/strong><\/th><th><strong>Primary Advantage<\/strong>&nbsp;<\/th><\/tr><\/thead><tbody><tr><td><strong>Traditional Subdomain<\/strong><\/td><td>Marketing speed, low-overhead publishing, separate team management.<\/td><td>Zero developer dependency for writing and design updates.<\/td><\/tr><tr><td><strong>Headless WordPress<\/strong><\/td><td>Maintaining a React\/Vite unified codebase, fast Core Web Vitals, custom animations.<\/td><td>Total control over the frontend UX within the existing stack.<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-2-1024x576.png\" alt=\"\" class=\"wp-image-140\" srcset=\"https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-2-1024x576.png 1024w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-2-300x169.png 300w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-2-768x432.png 768w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-2-1536x864.png 1536w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-2.png 1672w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2.  Firstly, we are going to discuss the traditional way of setting up<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong><br> <br>2.1  Traditional subdomain approach <\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><br><\/strong>This approach is best if you want a standalone, near-zero coding, and a marketer to take over completely<br><br><strong>Step1 &#8211; DNS and Subdomain Approach<br> \u00a01. <\/strong>Log in to the domain registrar where your website is managed<br>\u00a0 <strong>2. <\/strong>Navigate to\u00a0 the DNS management panel<br>\u00a0 <strong>3. <\/strong>Add a new <strong>A Record <\/strong>with the following configuration<br>\u00a0 \u00a0 \u00a0 \u00a0 <strong>Host\/Name: <\/strong>blog<br>\u00a0 \u00a0 \u00a0 \u00a0 <strong>Value\/Point to: <\/strong>The IP address of your dedicated hosting server<br>\u00a0 \u00a0 \u00a0 \u00a0 <strong>TTL: <\/strong>Automatic or 1 hour<br><br><strong>Answer to question no 1.2 : <br>Where do you have to be careful?<br><\/strong>If you are using Hostinger, then you must create a subdomain first. Failing to do so causes the installation to shift your primary domain link, potentially breaking your website\u2019s accessibility. If this happens, then see the \u2018Complete solution\u2019 section at the end of this guide for steps to resolve it.<br><br><strong>Step2 &#8211; Set up managed WordPress hosting<br> \u00a0 1. <\/strong>Purchase a specialized hosting plan (e.g Hostinger, HostArmada, or managed VPS via Cloudways)<br>\u00a0 <strong>\u00a02. <\/strong>Select <strong>Install WordPress <\/strong>when provisioning the environment<br>\u00a0  <strong>3. <\/strong>When prompted for the installation domain, specify <a href=\"http:\/\/blog.website.in\">blog.website.in<br><\/a>\u00a0 <strong>\u00a04. <\/strong>Securely save the WordPress administration credentials<br>\u00a0  <strong>5. <\/strong>Verify that a free SSL certificate(HTTPS) is auto-generated and active<br><br><strong>Step3 &#8211; Core Configration &amp; Cleanup<br> 1. <\/strong>Log into the dashboard at <a href=\"http:\/\/blog.website.in\/wp-admin\">blog.website.in\/wp-admin<br><\/a> <strong>2. <\/strong>Navigate to <strong>Settings>Permalinks <\/strong>and update the structure to <strong>Post name <\/strong>for clean SEO-optimized URLs<br> <strong>3. <\/strong>Go to the plugin menu and remove the default bloatware like <em>Hello Dolly <br><\/em><br><strong>Step4 &#8211; Essential Plugin Installation <br>\u00a0 <\/strong>To prevent performance degradation, restrict active plugins to the core essentials<br>\u00a0 \u00a0 <strong>&#8211; SEO: <\/strong><em>Rank Math <\/em>or<em> Yoast SEO <\/em>for automatic sitemaps and metadata control<br>\u00a0   <strong>&#8211; Caching &amp;Optimization: <\/strong>LiteSpeed and Cache or <em>WP Rocket <br><\/em>\u00a0  <strong>\u00a0&#8211; Security: <\/strong><em>Wordfence <\/em>or Solid <em>Security<\/em><strong> <\/strong>to prevent automated brute-force scripts<br>\u00a0 <strong>\u00a0 &#8211; Forms: <\/strong><em>Fluent Forms <\/em>for newsletter capture and lead generation<br><br><strong>Step5 &#8211; Themes<br> \u00a0 <\/strong>Avoid complex visual page builders like Elementor if page speed is a priority. Choose a lightweight native block-editor theme such as <strong>GeneratePress, Astra, Kadence<\/strong><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-3-1024x576.png\" alt=\"\" class=\"wp-image-141\" srcset=\"https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-3-1024x576.png 1024w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-3-300x169.png 300w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-3-768x432.png 768w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-3-1536x864.png 1536w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-3.png 1672w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2.2  Route 2: The Headless WordPress Approach<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Best if you want to keep this inside of your main React application while providing the writer a familiar dashboard interface<br><br><strong>Step1 &#8211; Provision of CMS backend&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Follow the hosting setup instructions, but isolate the installation on an internal subdomain like <a href=\"http:\/\/cms.website.in\">cms.website.in<\/a> or <a href=\"http:\/\/api.website.in\">api.website.in<\/a> where the content writer will perform daily operations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step2 &#8211; Expose the REST API or GraphQL endpoint <\/strong><strong><br><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress natively exposes JSON data out of the box via<br><a href=\"https:\/\/cms.website.in\/wp-json\/wp\/v2\/posts\">https:\/\/cms.website.in\/wp-json\/wp\/v2\/posts<\/a>. If your React architecture benefits from GraphQL, install the <strong>WPGraphQL <\/strong>plugin to establish a schema layer<br><strong><br><\/strong><strong>Step3 &#8211; Fetch Data in React + Vite<\/strong><strong><br><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Implement a data-fetching service within your TypeScript source files to pull asynchronous content:<br><code>export interface Post {<br>\u00a0 id: number;<br>\u00a0 title: { rendered: string };<br>\u00a0 content: { rendered: string };<br>\u00a0 slug: string;<br>}<br><br>export const getBlogPosts = async (): Promise&lt;Post[]> => {<br>\u00a0 const response = await fetch('https:\/\/cms.orionpulse.in\/wp-json\/wp\/v2\/posts?_embed');<br>\u00a0 if (!response.ok) throw new Error('Failed to fetch blogs');<br>\u00a0 return response.json();<br>};<br><\/code><br><strong>Step 4 &#8211; Clean Rendering with Tailwind Typography<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Since WordPress outputs database entries as raw HTML strings, safely render them into your template layout while utilizing Tailwind&#8217;s prose capabilities for layout formatting:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>import { useEffect, useState } from 'react';<br>import { useParams } from 'react-router-dom';<br><br>export default function BlogPost() {<br>\u00a0 const { slug } = useParams();<br>\u00a0 const [post, setPost] = useState&lt;any>(null);<br><br>\u00a0 if (!post) return &lt;div>Loading...&lt;\/div>;<br><br>\u00a0 return (<br>\u00a0 \u00a0 &lt;article className=\"max-w-3xl mx-auto px-4 py-12\"><br>\u00a0 \u00a0 \u00a0 &lt;h1 className=\"text-4xl font-bold font-inter mb-6\">{post.title.rendered}&lt;\/h1><br>\u00a0 \u00a0 \u00a0 &lt;div<br>\u00a0 \u00a0 \u00a0 \u00a0 className=\"prose prose-invert lg:prose-xl\"<br>\u00a0 \u00a0 \u00a0 \u00a0 dangerouslySetInnerHTML={{ __html: post.content.rendered }}<br>\u00a0 \u00a0 \u00a0 \/><br>\u00a0 \u00a0 &lt;\/article><br>\u00a0 );<br>}<\/code><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-4-1024x683.png\" alt=\"\" class=\"wp-image-142\" srcset=\"https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-4-1024x683.png 1024w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-4-300x200.png 300w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-4-768x512.png 768w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-4.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">3.   Operational Guidelines<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><br>3.1   Maintenance &amp; Security Schedule<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;<strong>Weekly\/Monthly Updates: <\/strong>Establish a checklist for updating WordPress core, plugins, and theme to mitigate vulnerabilities.<br><strong>&nbsp;Backup Strategy: <\/strong>Document backup storage locations (e.g., AWS S3, Google Drive) and schedule automated daily snapshots.<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3.2   Content Publishing Workflow<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><br><\/strong>Define the workflow from drafting content in a shared document (e.g integrating with assets like) to publishing in WordPress CMS<br><strong>Deployment &amp; CI\/CD (for Headless)<\/strong><strong><br><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Include a strategy for automated deployments, such as triggering Vercel or Netlify build hooks whenever a new post is published in WordPress.<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3.3   Monitoring &amp; Observability<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Performance:<\/strong> Track metrics using Google Lighthouse or PageSpeed Insights.<\/li>\n\n\n\n<li><strong>Analytics:<\/strong> Implement GA4 or privacy-focused alternatives.<\/li>\n\n\n\n<li><strong>Error Logging:<\/strong> Utilize tools like Sentry for tracking 404s or API errors on the React frontend.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Team Roles &amp; Access<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Define clear access boundaries, separating responsibilities for Developers (code repository) versus Content Writers (WordPress dashboard).<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-5-1024x683.png\" alt=\"\" class=\"wp-image-143\" srcset=\"https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-5-1024x683.png 1024w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-5-300x200.png 300w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-5-768x512.png 768w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-5.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Complete Solution: Recovering from a Root Domain WordPress Installation<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you accidentally installed WordPress in the root <em>public_html<\/em> directory and your React website is now offline, follow these steps to restore your React application while keeping your WordPress blog intact.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4.1  Phase 1: Isolate WordPress<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;<strong>Move WordPress files:<\/strong> In your Hostinger File Manager (<em>public_html<\/em>), create a new folder named <em>blog<\/em>.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Move files:<\/strong> Move all WordPress-related files (e.g., <em>wp-admin, wp-content, wp-includes, index.php, .htaccess<\/em>) inside this new <em>blog<\/em> folder.<\/li>\n\n\n\n<li><strong>Update Paths:<\/strong> In your WordPress dashboard, go to <strong>Settings > General<\/strong> and update the &#8216;WordPress Address (URL)&#8217; and &#8216;Site Address (URL)&#8217; to <a href=\"https:\/\/orionpulse.in\/blog\"><em>https:\/\/website.in\/blog<\/em><\/a>.<br><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><br><strong>4.2  Phase 2: Fix React Build Errors<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If your React build is failing due to TypeScript errors, you must clean up your code before deploying:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Identify Errors:<\/strong> Run <em>npm run build<\/em> locally. If you see errors like &#8220;is declared but its value is never read,&#8221; identify the files mentioned (e.g., <em>Home.tsx<\/em> or <em>Marketing.tsx<\/em>).<\/li>\n\n\n\n<li><strong>Clean Code:<\/strong> Open these files and delete the unused imports or variables causing the errors.<\/li>\n\n\n\n<li><strong>Verify Build:<\/strong> Run <em>npm run build<\/em> again until you see a success message and a generated <em>dist<\/em> folder.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><br><strong>4.3  Phase 3: Restore React to Root<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;<strong>Clean Root:<\/strong> Go to the <em>public_html<\/em> folder in Hostinger. Delete any old <em>index.html<\/em> or files leftover from the previous React deployment. <strong>Crucial:<\/strong> Do not delete the <em>blog<\/em> folder you created in Phase 1.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Upload:<\/strong> Open your local <em>dist<\/em> folder. Upload all the contents <em>inside<\/em> it (e.g., <em>index.html, assets, favicon.ico<\/em>) directly into the <em>public_html<\/em> root.<\/li>\n<\/ol>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Verification:<\/strong> Visit <em>https:\/\/website.in<\/em> to see your React website, and <em>https:\/\/website.in\/blog<\/em> to see your WordPress blog.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-6-1024x576.png\" alt=\"\" class=\"wp-image-144\" srcset=\"https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-6-1024x576.png 1024w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-6-300x169.png 300w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-6-768x432.png 768w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-6-1536x864.png 1536w, https:\/\/orionpulse.in\/blog\/wp-content\/uploads\/2026\/07\/image-6.png 1672w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Answer to the question <\/strong><\/h2>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>1.1  What problem did I face?<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00a0<\/strong><strong><br><\/strong>During the setup, the biggest problem I faced was not creating the required subdomain in Hostinger. As a result, my website was   down for quite a while until I found the cause and fixed it. If you face the same issue, don&#8217;t worry\u2014the last section provides a step-by-step solution to help you resolve it.\u00a0<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>1.2 Where do you have to be careful?<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><br><\/strong>Explained above<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>1.3 Why do we need WordPress when we have the sanity and others?<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Firstly, I also believed that if there is Sanity and other platforms, then why the fuck do I need WordPress for a blog, but on my one project there is the Sanity cms and because that can only be operated by the person who knows the code at that point if anyone else wants to upload a blog then they can&#8217;t thats by I use the WordPress that anyone from the team can use that\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Answer from you guys<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5.1   What problem did you face at the time of setup?<\/strong><strong><br><\/strong><strong>5.2  What do you think I missed to cover in setup?<\/strong><strong><br><\/strong><strong>5.3  If there is any easy method, share it with us?<\/strong><strong><br><\/strong><strong>5.4  Why do you need WordPress unless sanity and other and which one is best? Share your opinion.<\/strong><strong><br><br><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Guys, we will talk in the comment section for any suggestions or problems. If that is needed, then I will cover that in the next blog&nbsp;<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog, I am going to share how I create a setup for a blog page from WordPress. The step-by-step implementation of WordPress on Hostinger or the&#8230;<\/p>\n","protected":false},"author":4,"featured_media":138,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-137","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/posts\/137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":13,"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/posts\/137\/revisions"}],"predecessor-version":[{"id":165,"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/posts\/137\/revisions\/165"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/media\/138"}],"wp:attachment":[{"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/media?parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/categories?post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orionpulse.in\/blog\/wp-json\/wp\/v2\/tags?post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}