{"id":226,"date":"2026-10-25T22:47:54","date_gmt":"2026-10-25T17:17:54","guid":{"rendered":"https:\/\/tusharbisht.com\/blog\/?p=226"},"modified":"2026-10-25T22:59:40","modified_gmt":"2026-10-25T17:29:40","slug":"building-custom-gutenberg-block-patterns-without-plugins","status":"publish","type":"post","link":"https:\/\/tusharbisht.com\/blog\/building-custom-gutenberg-block-patterns-without-plugins\/","title":{"rendered":"Building Custom Gutenberg Block Patterns Without Third-Party Plugins: Streamlining Client Editing While Keeping Codebases Light"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">When WordPress introduced the Block Editor (Gutenberg), it promised a visual editing experience that would rival modern page builders. However, developers quickly ran into a familiar hurdle: how do you empower non-technical clients to build visually cohesive, brand-aligned pages without watching them inadvertently destroy design systems or load down the database with bulky third-party plugin suites?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For years, the default agency response was to install third-party block libraries or heavy visual builders. While this delivers immediate drag-and-drop convenience, it incurs heavy technical debt: bloated CSS\/JS payloads, unpredictable plugin update conflicts, database lock-in, and frequent layout breakage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The solution already exists natively within core WordPress: custom Gutenberg block patterns.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By registering block patterns directly via your custom theme or a lightweight site-specific utility plugin, you give content editors pre-designed, responsive, production-ready layouts with zero third-party dependencies.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">The Hidden Costs of Third-Party Block Suites<\/h2>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Installing an off-the-shelf block library plugin often feels like a shortcut during development, but it introduces several long-term challenges:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Asset Bloat:<\/strong> Most commercial block plugins enqueue expansive stylesheet files and JavaScript bundles across your entire site, even on pages that only use a single basic component.<\/li>\n\n\n\n<li><strong>Vendor Lock-In:<\/strong> If a plugin author discontinues maintenance, changes their licensing model, or refactors component HTML wrappers, refactoring your client&#8217;s site becomes a costly migration nightmare.<\/li>\n\n\n\n<li><strong>Inconsistent UX:<\/strong> Third-party plugins introduce disparate controls, non-standard settings panels, and competing typography controls that confuse editors and compromise visual consistency.<\/li>\n\n\n\n<li><strong>Database &amp; Query Overhead:<\/strong> Many comprehensive page-builder plugins store metadata and layout configurations in non-standard post meta formats, hindering migration and slow-rendering the REST API.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Native Gutenberg block patterns avoid all of these issues. They rely strictly on core WordPress blocks (core\/group, core\/columns, core\/heading, core\/buttons), meaning WordPress executes them natively with zero supplementary overhead.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Anatomy of a Native Block Pattern<\/h2>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">A Gutenberg block pattern is a pre-configured arrangement of native core blocks stored as escaped HTML block comments, registered using PHP. When an editor inserts a pattern into a page, the blocks are injected into the editor canvas as independent core blocks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unlike reusable blocks (synced patterns), standard block patterns are decoupled upon insertion. Editing the text or replacing an image inside an inserted pattern modifies only that specific page instance, leaving the base template untouched.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Method 1: The Modern Directory-Based Approach (\/patterns)<\/h3>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">If you are developing a modern block theme (or a hybrid classic theme supporting Full Site Editing features), WordPress makes pattern registration almost entirely code-free through the theme root directory.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Step 1: Create the Patterns Directory<\/h4>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">In your custom theme root, create a dedicated folder named patterns:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>my-custom-theme\/\n\u251c\u2500\u2500 patterns\/\n\u2502   \u251c\u2500\u2500 hero-split.php\n\u2502   \u2514\u2500\u2500 feature-grid.php\n\u251c\u2500\u2500 functions.php\n\u2514\u2500\u2500 style.css<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Step 2: Declare Pattern File Headers<\/h4>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Any PHP file placed inside the \/patterns folder containing valid file header metadata is automatically detected and registered by WordPress core.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create patterns\/hero-split.php:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/**\n * Title: Split Hero with CTA\n * Slug: my-theme\/hero-split\n * Categories: featured, banner\n * Description: A full-width two-column hero section with headline, description, and primary CTA.\n * Keywords: hero, banner, cta, landing\n * Inserter: true\n *\/\n?>\n&lt;!-- wp:group {\"align\":\"full\",\"style\":{\"spacing\":{\"padding\":{\"top\":\"var:preset|spacing|70\",\"bottom\":\"var:preset|spacing|70\",\"left\":\"var:preset|spacing|50\",\"right\":\"var:preset|spacing|50\"}}},\"layout\":{\"type\":\"constrained\"}} -->\n&lt;div class=\"wp-block-group alignfull\" style=\"padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--50)\">\n    &lt;!-- wp:columns {\"verticalAlignment\":\"center\",\"align\":\"wide\"} -->\n    &lt;div class=\"wp-block-columns alignwide are-vertically-aligned-center\">\n        &lt;!-- wp:column {\"verticalAlignment\":\"center\",\"width\":\"60%\"} -->\n        &lt;div class=\"wp-block-column is-vertically-aligned-center\" style=\"flex-basis:60%\">\n            &lt;!-- wp:heading {\"level\":1,\"style\":{\"typography\":{\"lineHeight\":\"1.15\"}}} -->\n            &lt;h1 class=\"wp-block-heading\" style=\"line-height:1.15\">Build Faster. Ship Cleaner Code.&lt;\/h1>\n            &lt;!-- \/wp:heading -->\n\n            &lt;!-- wp:paragraph {\"fontSize\":\"medium\"} -->\n            &lt;p class=\"has-medium-font-size\">Deliver exceptional digital experiences without drowning your client websites in heavy third-party plugins.&lt;\/p>\n            &lt;!-- \/wp:paragraph -->\n\n            &lt;!-- wp:buttons -->\n            &lt;div class=\"wp-block-buttons\">\n                &lt;!-- wp:button {\"className\":\"is-style-fill\"} -->\n                &lt;div class=\"wp-block-button is-style-fill\">&lt;a class=\"wp-block-button__link wp-element-button\" href=\"\/contact\">Get Started&lt;\/a>&lt;\/div>\n                &lt;!-- \/wp:button -->\n            &lt;\/div>\n            &lt;!-- \/wp:buttons -->\n        &lt;\/div>\n        &lt;!-- \/wp:column -->\n\n        &lt;!-- wp:column {\"verticalAlignment\":\"center\",\"width\":\"40%\"} -->\n        &lt;div class=\"wp-block-column is-vertically-aligned-center\" style=\"flex-basis:40%\">\n            &lt;!-- wp:image {\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n            &lt;figure class=\"wp-block-image size-large\">&lt;img src=\"https:\/\/images.unsplash.com\/photo-1498050108023-c5249f4df085\" alt=\"Clean code preview\"\/>&lt;\/figure>\n            &lt;!-- \/wp:image -->\n        &lt;\/div>\n        &lt;!-- \/wp:column -->\n    &lt;\/div>\n    &lt;!-- \/wp:columns -->\n&lt;\/div>\n&lt;!-- \/wp:group -->\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress parses the header automatically, extracts the title, slug, and categories, and handles rendering inside the editor inserter with no hook declarations required.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Method 2: Programmatic Registration via functions.php<\/h3>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">For hybrid themes, bespoke headless configurations, or site-specific feature plugins, programmatic registration using register_block_pattern() remains the gold standard for granular control.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Step 1: Register Custom Pattern Categories<\/h4>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Grouping your bespoke patterns into client-specific categories prevents them from getting lost among core WordPress templates:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function custom_register_pattern_categories() {\n    register_block_pattern_category(\n        'client-brand-components',\n        array(\n            'label' => __( 'Brand Components', 'custom-textdomain' )\n        )\n    );\n}\nadd_action( 'init', 'custom_register_pattern_categories' );<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Step 2: Register the Pattern Definition<\/h4>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Hook into the init action to pass your markup and configuration parameters:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function custom_register_testimonial_slider_pattern() {\n    register_block_pattern(\n        'custom-theme\/customer-quote',\n        array(\n            'title'       => __( 'Minimal Customer Quote', 'custom-textdomain' ),\n            'description' => __( 'A bold pull-quote block styled with brand typography and author credentials.', 'custom-textdomain' ),\n            'categories'  => array( 'client-brand-components' ),\n            'keywords'    => array( 'quote', 'testimonial', 'review' ),\n            'content'     => '&lt;!-- wp:group {\"style\":{\"spacing\":{\"padding\":{\"top\":\"3rem\",\"bottom\":\"3rem\",\"left\":\"2rem\",\"right\":\"2rem\"}}},\"backgroundColor\":\"light-gray\",\"layout\":{\"type\":\"constrained\"}} -->\n                              &lt;div class=\"wp-block-group has-light-gray-background-color has-background\" style=\"padding-top:3rem;padding-right:2rem;padding-bottom:3rem;padding-left:2rem\">\n                                  &lt;!-- wp:quote {\"className\":\"is-style-plain\"} -->\n                                  &lt;blockquote class=\"wp-block-quote is-style-plain\">\n                                      &lt;p>\"This lightweight pattern architecture eliminated page bloat and lowered our Core Web Vitals score dramatically.\"&lt;\/p>\n                                      &lt;cite>Alex Morgan, Technical Lead&lt;\/cite>\n                                  &lt;\/blockquote>\n                                  &lt;!-- \/wp:quote -->\n                              &lt;\/div>\n                              &lt;!-- \/wp:group -->',\n        )\n    );\n}\nadd_action( 'init', 'custom_register_testimonial_slider_pattern' );<\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">The Pro Developer Workflow: Visual Assembly to Code Extraction<\/h2>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">You do not need to manually write serialized block markup (). Take advantage of the block editor&#8217;s visual environment to generate error-free code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Visual Assembly Workflow:\n\n1. Build Layout Visually (WordPress Admin \/ Staging)\n        \u2502\n        \u25bc\n2. Switch to Code Editor (Ctrl+Shift+Alt+M \/ Cmd+Shift+Opt+M)\n        \u2502\n        \u25bc\n3. Copy Serialized Block HTML\n        \u2502\n        \u25bc\n4. Paste into \/patterns\/file.php or wrap in register_block_pattern()\n        \u2502\n        \u25bc\n5. Replace Hardcoded Strings with Internationalization Helpers (e.g., esc_html__())<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Design on Canvas:<\/strong> Open a private draft page in WordPress. Use native Core Blocks (Group, Stack, Row, Columns, Image, Heading) to compose your design.<\/li>\n\n\n\n<li><strong>Standardize Styles:<\/strong> Stick to CSS variables and theme presets (var(&#8211;wp&#8211;preset&#8211;color&#8211;primary)) rather than arbitrary inline pixel values.<\/li>\n\n\n\n<li><strong>Switch to Code Editor:<\/strong> Open the editor&#8217;s options menu (top right three dots) and click Code Editor, or press Ctrl + Shift + Alt + M (Windows) \/ Cmd + Shift + Opt + M (Mac).<\/li>\n\n\n\n<li><strong>Copy Serialized Markup:<\/strong> Copy the pure block comments and clean HTML structure.<\/li>\n\n\n\n<li><strong>Paste into Theme Files:<\/strong> Save the output directly into a \/patterns\/*.php file or assign it to the &#8216;content&#8217; parameter in your PHP registration function.<\/li>\n<\/ol>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Guarding the Design System: Locking and Curation<\/h2>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Empowering clients does not mean giving up design control. WordPress allows you to curate the editor experience so layouts remain intact over time.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">1. Template &amp; Block Locking<\/h3>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Prevent accidental structural deletions while leaving text and images fully editable by applying block locking attributes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>templateLock: &#8220;all&#8221;<\/strong> &#8211; Completely prevents moving or deleting blocks within a container, as well as adding child blocks.<\/li>\n\n\n\n<li><strong>templateLock: &#8220;contentOnly&#8221;<\/strong> &#8211; The most client-friendly setting; collapses sidebar controls into pure content editing (text and image swaps only), completely hiding styling and layout options.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Example of applying contentOnly within a pattern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- wp:group {\"templateLock\":\"contentOnly\",\"layout\":{\"type\":\"constrained\"}} -->\n&lt;div class=\"wp-block-group\">\n    &lt;!-- wp:heading -->\n    &lt;h2>Client-Safe Editable Title&lt;\/h2>\n    &lt;!-- \/wp:heading -->\n    &lt;!-- wp:paragraph -->\n    &lt;p>Clients can modify this text directly, but cannot delete or break the parent layout wrapper.&lt;\/p>\n    &lt;!-- \/wp:paragraph -->\n&lt;\/div>\n&lt;!-- \/wp:group --><\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2. Disabling Core Pattern Noise<\/h3>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">To keep the pattern library focused and prevent clients from picking unrelated default layouts, unregister remote and default core patterns inside functions.php:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function remove_default_core_patterns() {\n    \/\/ Disable remote pattern directory fetching from WordPress.org\n    add_filter( 'should_load_remote_block_patterns', '__return_false' );\n\n    \/\/ Unregister core pattern categories if desired\n    unregister_block_pattern_category( 'buttons' );\n    unregister_block_pattern_category( 'columns' );\n    unregister_block_pattern_category( 'gallery' );\n}\nadd_action( 'init', 'remove_default_core_patterns' );\n<\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Performance &amp; Maintainability Comparison<\/h2>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>Metric \/ Dimension<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>Third-Party Block Suite<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>Native Custom Block Patterns<\/strong><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>Asset Overhead<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\">Heavy (50KB\u2013250KB+ CSS\/JS per page load)<\/td><td class=\"has-text-align-left\" data-align=\"left\">0 KB additional assets (uses Core CSS)<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>LCP \/ Core Web Vitals<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\">Prone to render-blocking styles &amp; shifts<\/td><td class=\"has-text-align-left\" data-align=\"left\">Zero impact; clean server-rendered markup<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>Long-Term Stability<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\">Dependent on plugin authors &amp; updates<\/td><td class=\"has-text-align-left\" data-align=\"left\">Future-proof; powered by WordPress Core<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>Client Learning Curve<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\">High (custom settings panels, disparate UI)<\/td><td class=\"has-text-align-left\" data-align=\"left\">Low (standard, familiar Gutenberg UI)<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>Vendor Lock-in<\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\">High (removing plugin breaks past layouts)<\/td><td class=\"has-text-align-left\" data-align=\"left\">Zero (blocks remain standard HTML comments)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions (FAQs)<\/h2>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">What is the difference between a Block Pattern and a Synced Pattern (Reusable Block)?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A standard Block Pattern is a starting layout. When you insert it, the blocks are completely independent. Changes made to an inserted block pattern affect only that specific post. A Synced Pattern (formerly called a Reusable Block) remains linked globally across all instances; changing content in one location updates every instance site-wide.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do I need to build a block theme to use custom block patterns?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. Custom block patterns work seamlessly in classic themes, hybrid themes, and Full Site Editing (FSE) block themes. You can register them via functions.php using register_block_pattern() on any WordPress site running WordPress 5.5 or later.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How do I add custom CSS classes to patterns without hardcoding them?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You can assign utility classes directly to blocks using the Advanced > Additional CSS Class(es) field in the editor before extracting the block markup. Once copied into your pattern file, that custom class will persist across every insertion.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can block patterns contain dynamic content like recent posts or author info?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. Block patterns can incorporate core dynamic blocks such as core\/query, core\/post-title, core\/post-date, or custom dynamic ACF\/Gutenberg blocks. When inserted, the dynamic blocks will fetch live database records automatically.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When WordPress introduced the Block Editor (Gutenberg), it promised a visual editing experience that would rival modern page builders. However, developers quickly ran into a familiar hurdle: how do you empower non-technical clients to build visually cohesive, brand-aligned pages without watching them inadvertently destroy design systems or load down the database with bulky third-party plugin [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":256,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-226","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/posts\/226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/comments?post=226"}],"version-history":[{"count":29,"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/posts\/226\/revisions"}],"predecessor-version":[{"id":255,"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/posts\/226\/revisions\/255"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/media\/256"}],"wp:attachment":[{"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/media?parent=226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/categories?post=226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tusharbisht.com\/blog\/wp-json\/wp\/v2\/tags?post=226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}