SEO Tutorial for Beginners: Step-by-Step Guide

Written by

in

TL;DR: SEO (Search Engine Optimization) is the practice of making your web pages more visible in Google’s free search results. To start, do keyword research, then optimize your page’s title, headings, and content, and finally build authority through backlinks and user experience.

Step 1: Understand How Search Engines Work

Search engines crawl your site, index the content, and then rank pages based on relevance and authority. Your goal is to make it easy for crawlers to read your page and for users to find value. Think of SEO as a three-legged stool: technical health, on-page content, and off-page signals (links).

If you want to dig deeper, check out our guide on Digital Twins in Supply Chain: Optimizing Logistics Efficien.

Step 2: Do Simple Keyword Research (Free Tools)

Start with Google’s autocomplete: type your main topic into the search bar and note the suggested phrases. Also, use Google’s “People Also Ask” box to find related questions. Choose one primary keyword (e.g., “beginner SEO guide”) and two secondary keywords (e.g., “SEO tips” and “how to rank”). Write these down — they will drive your content.

Step 3: Optimize Your Page Title and Meta Description

Your title tag is the clickable headline in search results. Keep it under 60 characters, place your primary keyword near the beginning, and make it compelling. Write a meta description (under 155 characters) that summarizes the page and includes a call to action — this doesn’t affect ranking but boosts click-through rate. Use the and tags in your HTML.</p> <h2>Step 4: Structure Your Content with Headings (H1, H2)</h2> <p>Use exactly one H1 tag for your main title (your keyword). Then break your content into logical H2 subheadings that include your secondary keywords naturally. This helps Google understand the page’s structure and improves readability. Keep paragraphs short (2-3 sentences) and use bullet points or numbered lists where appropriate.</p> <h2>Step 5: Write for Users, Then Optimize for Keywords</h2> <p>Write naturally. Include your primary keyword in the first 100 words, in at least one H2, and in the URL (e.g., /seo-tutorial-beginners). Use synonyms and related phrases (e.g., “search ranking,” “organic traffic”) — don’t stuff keywords. Aim for 800–1,500 words for a beginner guide; longer is fine if it’s valuable. Always answer the user’s search intent: if they ask “how to,” give steps.</p> <h2>Step 6: Improve Technical Basics</h2> <p>Ensure your site loads fast (under 3 seconds) using Google’s PageSpeed Insights. Make your site mobile-friendly — use responsive design. Add alt text to images (but no images here, just remember to do it on your site). Create a clean URL structure and use HTTPS. Submit your sitemap to Google Search Console.</p> <h2>Step 7: Build Trust with Internal and External Links</h2> <p>Link to 2-3 other pages on your own site (internal links) to help crawlers discover content. Then, earn 1-2 backlinks from reputable sites by guest posting, answering forums, or collaborating. Avoid buying links — Google penalizes that. Social shares don’t directly count, but they bring traffic that can lead to links.</p> <h2>Step 8: Measure, Adjust, and Be Patient</h2> <p>After 2-4 weeks, check Google Search Console for your impressions and clicks. Look at which queries you appear for and improve pages that are close to the top of page 2. Update your content every 6 months. SEO is a long game — expect 3-6 months for meaningful results.</p> <h2>FAQ</h2> <p><strong>Q: How long until I see results from beginner SEO?</strong><br />A: Typically 3-6 months for new sites, but you can see small improvements in 2-4 weeks if you target low-competition</p> <h3>Related Articles</h3> <ul> <li><a href="https://porcelainnest.com/?p=2433">Suborbital Space Tourism: Your Guide to Commercial Flights</a></li> <li><a href="https://porcelainnest.com/?p=2484">AI Microlearning: How It’s Replacing Corporate Onboarding</a></li> </ul> </div> <div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"> </div> <div class="wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow" style="margin-top:var(--wp--preset--spacing--60);margin-bottom:var(--wp--preset--spacing--60);"> <nav class="wp-block-group alignwide is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-878fe601 wp-block-group-is-layout-flex" aria-label="Post navigation" style="border-top-color:var(--wp--preset--color--accent-6);border-top-width:1px;padding-top:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40)"> <div class="post-navigation-link-previous wp-block-post-navigation-link"><span class="wp-block-post-navigation-link__arrow-previous is-arrow-arrow" aria-hidden="true">←</span><a href="https://porcelainnest.com/digital-twins-for-personal-health-the-future-of-data/" rel="prev">Digital Twins for Personal Health: The Future of Data</a></div> <div class="post-navigation-link-next wp-block-post-navigation-link"><a href="https://porcelainnest.com/decentralized-identity-replaces-traditional-login-credentials68-charactershere-are-a-few/" rel="next">**Decentralized Identity Replaces Traditional Login Credentials** *(68 characters)* Here are a few</a><span class="wp-block-post-navigation-link__arrow-next is-arrow-arrow" aria-hidden="true">→</span></div> </nav> </div> <div class="wp-block-comments wp-block-comments-query-loop" style="margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)"> <h2 class="wp-block-heading has-x-large-font-size">Comments</h2> <h3 id="comments" class="wp-block-comments-title has-large-font-size">One response to “SEO Tutorial for Beginners: Step-by-Step Guide”</h3> <ol class="wp-block-comment-template"><li id="comment-1330" class="pingback even thread-even depth-1"> <div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow" style="margin-top:0;margin-bottom:var(--wp--preset--spacing--50)"> <div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-40af6500 wp-block-group-is-layout-flex"> <div class="wp-block-avatar"></div> <div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"> <div class="wp-block-comment-date"><time datetime="2026-09-10T22:28:40+00:00"><a href="https://porcelainnest.com/seo-tutorial-for-beginners-step-by-step-guide/#comment-1330">September 10, 2026</a></time></div> <div class="wp-block-comment-author-name"><a rel="external nofollow ugc" href="https://porcelainnest.com/founder-mental-health-now-key-investor-metric/" target="_self" >Founder Mental Health Now Key Investor Metric – Porcelain Nest</a></div> <div class="wp-block-comment-content"><p>[…] If you want to dig deeper, check out our guide on SEO Tutorial for Beginners: Step-by-Step Guide. […]</p> </div> <div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-3a88641f wp-block-group-is-layout-flex"> <div class="wp-block-comment-reply-link"><a rel="nofollow" class="comment-reply-link" href="https://porcelainnest.com/seo-tutorial-for-beginners-step-by-step-guide/?replytocom=1330#respond" data-commentid="1330" data-postid="2490" data-belowelement="comment-1330" data-respondelement="respond" data-replyto="Reply to Founder Mental Health Now Key Investor Metric – Porcelain Nest" aria-label="Reply to Founder Mental Health Now Key Investor Metric – Porcelain Nest">Reply</a></div> </div> </div> </div> </div> </li></ol> <div id="respond" class="comment-respond wp-block-post-comments-form"> <h3 id="reply-title" class="comment-reply-title">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/seo-tutorial-for-beginners-step-by-step-guide/#respond" style="display:none;">Cancel reply</a></small></h3><form action="https://porcelainnest.com/wp-comments-post.php" method="post" id="commentform" class="comment-form"><p class="comment-notes"><span id="email-notes">Your email address will not be published.</span> <span class="required-field-message">Required fields are marked <span class="required">*</span></span></p><p class="comment-form-comment"><label for="comment">Comment <span class="required">*</span></label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required></textarea></p><p class="comment-form-author"><label for="author">Name <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required /></p> <p class="comment-form-email"><label for="email">Email <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required /></p> <p class="comment-form-url"><label for="url">Website</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" autocomplete="url" /></p> <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">Save my name, email, and website in this browser for the next time I comment.</label></p> <p class="form-submit wp-block-button"><input name="submit" type="submit" id="submit" class="wp-block-button__link wp-element-button" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='2490' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p></form> </div><!-- #respond --> </div> </div> <div class="wp-block-group alignwide has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"> <h2 class="wp-block-heading alignwide has-small-font-size" style="font-style:normal;font-weight:700;letter-spacing:1.4px;text-transform:uppercase">More posts</h2> <div class="wp-block-query alignwide is-layout-flow wp-block-query-is-layout-flow"> <ul class="alignfull wp-block-post-template is-layout-flow wp-container-core-post-template-is-layout-b4d04ffe wp-block-post-template-is-layout-flow"><li class="wp-block-post post-2714 post type-post status-publish format-standard hentry category-uncategorized"> <div class="wp-block-group alignfull is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-cba70755 wp-block-group-is-layout-flex" style="border-bottom-color:var(--wp--preset--color--accent-6);border-bottom-width:1px;padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)"> <h3 class="wp-block-post-title has-large-font-size"><a href="https://porcelainnest.com/bci-restores-speech-new-hope-for-stroke-patients/" target="_self" >BCI Restores Speech: New Hope for Stroke Patients</a></h3> <div class="has-text-align-right wp-block-post-date"><a href="https://porcelainnest.com/bci-restores-speech-new-hope-for-stroke-patients/"><time datetime="2026-09-13T16:42:50+00:00">September 13, 2026</time></a></div> </div> </li><li class="wp-block-post post-2713 post type-post status-publish format-standard hentry category-uncategorized"> <div class="wp-block-group alignfull is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-cba70755 wp-block-group-is-layout-flex" style="border-bottom-color:var(--wp--preset--color--accent-6);border-bottom-width:1px;padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)"> <h3 class="wp-block-post-title has-large-font-size"><a href="https://porcelainnest.com/space-based-solar-power-pilot-goes-live-what-it-means/" target="_self" >Space-Based Solar Power Pilot Goes Live: What It Means</a></h3> <div class="has-text-align-right wp-block-post-date"><a href="https://porcelainnest.com/space-based-solar-power-pilot-goes-live-what-it-means/"><time datetime="2026-09-13T16:29:02+00:00">September 13, 2026</time></a></div> </div> </li><li class="wp-block-post post-2712 post type-post status-publish format-standard hentry category-uncategorized"> <div class="wp-block-group alignfull is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-cba70755 wp-block-group-is-layout-flex" style="border-bottom-color:var(--wp--preset--color--accent-6);border-bottom-width:1px;padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)"> <h3 class="wp-block-post-title has-large-font-size"><a href="https://porcelainnest.com/solid-state-batteries-enter-mass-ev-production/" target="_self" >Solid-State Batteries Enter Mass EV Production</a></h3> <div class="has-text-align-right wp-block-post-date"><a href="https://porcelainnest.com/solid-state-batteries-enter-mass-ev-production/"><time datetime="2026-09-13T15:58:12+00:00">September 13, 2026</time></a></div> </div> </li><li class="wp-block-post post-2711 post type-post status-publish format-standard hentry category-uncategorized"> <div class="wp-block-group alignfull is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-cba70755 wp-block-group-is-layout-flex" style="border-bottom-color:var(--wp--preset--color--accent-6);border-bottom-width:1px;padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)"> <h3 class="wp-block-post-title has-large-font-size"><a href="https://porcelainnest.com/vertical-farms-transform-city-skylines-scaling-urban-agriculture/" target="_self" >Vertical Farms Transform City Skylines: Scaling Urban Agriculture</a></h3> <div class="has-text-align-right wp-block-post-date"><a href="https://porcelainnest.com/vertical-farms-transform-city-skylines-scaling-urban-agriculture/"><time datetime="2026-09-13T15:57:21+00:00">September 13, 2026</time></a></div> </div> </li></ul> </div> </div> </main> <footer class="wp-block-template-part"> <div class="wp-block-group alignfull has-link-color has-background is-layout-flow wp-block-group-is-layout-flow" style="background-color:#0f1626;color:#cdd6e4;font-size:14px;padding-top:40px;padding-right:24px;padding-bottom:40px;padding-left:24px"> <div class="wp-block-group is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-ffbb8546 wp-block-group-is-layout-flex"> <h2 style="font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.392), 18px)" class="wp-block-site-title has-text-color has-white-color"><a href="https://porcelainnest.com" target="_self" rel="home">Porcelain Nest</a></h2> <p class="has-white-color has-text-color wp-block-paragraph">Blue & white porcelain, dinnerware & home accents</p> </div> <div class="wp-block-group is-content-justification-flex-start is-layout-flex wp-block-group-is-layout-flex"> <p class="wp-block-paragraph" style="margin-right:24px"><a style="color:#cdd6e4" href="/privacy-policy/">Privacy Policy</a></p> <p class="wp-block-paragraph" style="margin-right:24px"><a style="color:#cdd6e4" href="/refund_returns/">Shipping & Returns</a></p> <p class="wp-block-paragraph"><a style="color:#cdd6e4" href="/shop/">Shop</a></p> </div> <p class="has-text-align-center wp-block-paragraph">© 2026 Porcelain Nest. All rights reserved.</p> </div> </footer> </div> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/twentytwentyfive/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script data-wp-router-options="{"loadOnClientNavigation":true}" fetchpriority="low" id="@wordpress/block-library/navigation/view-js-module" src="https://porcelainnest.com/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js?ver=1bf28ded04f9f188bdcb" type="module"></script> <script id="wp-script-module-data-@wordpress/interactivity" type="application/json"> {"config":{"woocommerce":{"nonOptimisticProperties":[],"currency":{"code":"USD","precision":2,"symbol":"$","symbolPosition":"left","decimalSeparator":".","thousandSeparator":",","priceFormat":"%1$s%2$s"},"locale":{"siteLocale":"en_US","userLocale":"en_US","weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"placeholderImgSrc":"https://porcelainnest.com/wp-content/uploads/woocommerce-placeholder.webp"},"woocommerce/mini-cart-title-items-counter-block":{"itemsInCartTextTemplate":"(items: %d)"},"woocommerce/mini-cart-products-table-block":{"reduceQuantityLabel":"Reduce quantity of %s","increaseQuantityLabel":"Increase quantity of %s","quantityDescriptionLabel":"Quantity of %s in your cart.","removeFromCartLabel":"Remove %s from cart"},"woocommerce/mini-cart":{"displayCartPriceIncludingTax":false,"onCartClickBehaviour":"open_drawer","checkoutUrl":"https://porcelainnest.com/checkout/","buttonAriaLabelTemplate":"Number of items in the cart: %d"}},"state":{"woocommerce":{"cart":{"items":[],"coupons":[],"fees":[],"totals":{"total_items":"0","total_items_tax":"0","total_fees":"0","total_fees_tax":"0","total_discount":"0","total_discount_tax":"0","total_shipping":null,"total_shipping_tax":null,"total_price":"0","total_tax":"0","tax_lines":[],"currency_code":"USD","currency_symbol":"$","currency_minor_unit":2,"currency_decimal_separator":".","currency_thousand_separator":",","currency_prefix":"$","currency_suffix":""},"shipping_address":{"first_name":"","last_name":"","company":"","address_1":"","address_2":"","city":"","state":"CA","postcode":"","country":"US","phone":""},"billing_address":{"first_name":"","last_name":"","company":"","address_1":"","address_2":"","city":"","state":"CA","postcode":"","country":"US","email":"","phone":""},"needs_payment":false,"needs_shipping":false,"payment_requirements":["products"],"has_calculated_shipping":false,"shipping_rates":[],"items_count":0,"items_weight":0,"cross_sells":[],"errors":[],"payment_methods":["paypal"],"extensions":{}},"noticeId":"","restUrl":"https://porcelainnest.com/wp-json/"},"woocommerce/mini-cart-title-items-counter-block":{"itemsInCartText":"(items: 0)"},"woocommerce/mini-cart-products-table-block":{"cartItem":{}},"woocommerce/mini-cart-footer-block":{"formattedSubtotal":"$0.00"},"woocommerce/mini-cart":{"isOpen":false,"totalItemsInCart":0,"shouldShowTaxLabel":false,"badgeIsVisible":false,"formattedSubtotal":"$0.00","drawerOverlayClass":"wc-block-components-drawer__screen-overlay wc-block-components-drawer__screen-overlay--with-slide-out wc-block-components-drawer__screen-overlay--is-hidden","buttonAriaLabel":{},"productCountColor":""}},"derivedStateClosures":{"woocommerce/mini-cart":["state.buttonAriaLabel"]}} </script> <div class="wc-block-components-drawer__screen-overlay wc-block-components-drawer__screen-overlay--with-slide-out wc-block-components-drawer__screen-overlay--is-hidden" data-wp-interactive="woocommerce/mini-cart" data-wp-router-region='{ "id": "woocommerce/mini-cart-overlay", "attachTo": "body" }' data-wp-key="wc-mini-cart-overlay" data-wp-on--click="actions.overlayCloseDrawer" data-wp-on--keydown="actions.handleOverlayKeydown" data-wp-watch="callbacks.focusFirstElement" data-wp-bind--class="state.drawerOverlayClass" > <div aria-hidden="true" aria-modal="false" data-wp-bind--role="state.drawerRole" data-wp-bind--aria-modal="state.isOpen" data-wp-bind--aria-hidden="!state.isOpen" data-wp-bind--tabindex="state.drawerTabIndex" class="wc-block-mini-cart__drawer wc-block-components-drawer is-mobile" > <div class="wc-block-components-drawer__content"> <div class="wc-block-mini-cart__template-part"> <div data-block-name="woocommerce/mini-cart-contents" class="wp-block-woocommerce-mini-cart-contents" data-wp-interactive="woocommerce/mini-cart-contents" data-wp-style--background-color="woocommerce/mini-cart::state.contentsBackgroundColor"> <div class="wc-block-components-drawer__close-wrapper"> <button data-wp-on--click="woocommerce/mini-cart::actions.closeDrawer" class="wc-block-components-button wp-element-button wc-block-components-drawer__close contained" aria-label="Close" type="button"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false"> <path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path> </svg> </button> </div> <div data-block-name="woocommerce/filled-mini-cart-contents-block" class="wp-block-woocommerce-filled-mini-cart-contents-block" data-wp-interactive="woocommerce/mini-cart" data-wp-context="woocommerce/store-notices::{"notices":[]}" data-wp-bind--hidden="state.cartIsEmpty"> <div class="wc-block-components-notices" data-wp-interactive="woocommerce/store-notices" ><template data-wp-each--notice="context.notices" data-wp-each-key="context.notice.id" > <div class="wc-block-components-notice-banner" data-wp-class--is-error="state.isError" data-wp-class--is-success="state.isSuccess" data-wp-class--is-info="state.isInfo" data-wp-class--is-dismissible="context.notice.dismissible" data-wp-bind--role="state.role" data-wp-watch="callbacks.injectIcon" > <div class="wc-block-components-notice-banner__content"> <span data-wp-init="callbacks.renderNoticeContent"></span> </div> <button data-wp-bind--hidden="!context.notice.dismissible" class="wc-block-components-button wp-element-button wc-block-components-notice-banner__dismiss contained" aria-label="Dismiss this notice" data-wp-on--click="actions.removeNotice" > <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z" /> </svg> </button> </div> </template> </div> <h2 data-block-name="woocommerce/mini-cart-title-block" class="wc-block-mini-cart__title wp-block-woocommerce-mini-cart-title-block"> <span data-block-name="woocommerce/mini-cart-title-label-block" class="wp-block-woocommerce-mini-cart-title-label-block"> Your cart </span> <span data-block-name="woocommerce/mini-cart-title-items-counter-block" class="wp-block-woocommerce-mini-cart-title-items-counter-block" data-wp-text="state.itemsInCartText" data-wp-interactive="woocommerce/mini-cart-title-items-counter-block">(items: 0)</span> </h2> <div data-block-name="woocommerce/mini-cart-items-block" class="wc-block-mini-cart__items wp-block-woocommerce-mini-cart-items-block" tabindex="-1"> <div data-block-name="woocommerce/mini-cart-products-table-block" class="wc-block-mini-cart__products-table wp-block-woocommerce-mini-cart-products-table-block" data-wp-interactive="woocommerce/mini-cart-products-table-block"> <table class="wc-block-cart-items wc-block-mini-cart-items" tabindex="-1"> <caption class="screen-reader-text"> <h2> Products in cart </h2> </caption> <thead> <tr class="wc-block-cart-items__header"> <th class="wc-block-cart-items__header-image"> <span>Product</span> </th> <th class="wc-block-cart-items__header-product"> <span>Details</span> </th> <th class="wc-block-cart-items__header-total"> <span>Total</span> </th> </tr> </thead> <tbody> <template data-wp-each--cart-item="woocommerce::state.cart.items" data-wp-each-key="state.cartItem.key" > <tr class="wc-block-cart-items__row" data-wp-bind--hidden="!state.cartItem.key" data-wp-run="callbacks.filterCartItemClass" tabindex="-1" > <td data-wp-context='{ "isImageHidden": false }' class="wc-block-cart-item__image" aria-hidden="true"> <img data-wp-bind--hidden="!state.isProductHiddenFromCatalog" data-wp-bind--src="state.itemThumbnail" data-wp-bind--alt="state.cartItemName" data-wp-bind--srcset="state.itemSrcset" data-wp-bind--sizes="state.itemSizes" data-wp-on--error="actions.hideImage" > <a data-wp-bind--hidden="state.isProductHiddenFromCatalog" data-wp-bind--href="state.cartItem.permalink" tabindex="-1"> <img data-wp-bind--hidden="context.isImageHidden" data-wp-bind--src="state.itemThumbnail" data-wp-bind--alt="state.cartItemName" data-wp-bind--srcset="state.itemSrcset" data-wp-bind--sizes="state.itemSizes" data-wp-on--error="actions.hideImage" > </a> </td> <td class="wc-block-cart-item__product"> <div class="wc-block-cart-item__wrap"> <span data-wp-bind--hidden="!state.isProductHiddenFromCatalog" data-wp-text="state.cartItemName" class="wc-block-components-product-name"></span> <a data-wp-bind--hidden="state.isProductHiddenFromCatalog" data-wp-text="state.cartItemName" data-wp-bind--href="state.cartItem.permalink" class="wc-block-components-product-name"></a> <div data-wp-bind--hidden="!state.cartItem.show_backorder_badge" class="wc-block-components-product-badge wc-block-components-product-backorder-badge"> Available on backorder </div> <div class="wc-block-cart-item__prices"> <span data-wp-bind--hidden="!state.cartItemHasDiscount" class="price wc-block-components-product-price"> <span data-wp-text="state.beforeItemPrice"></span> <span class="screen-reader-text"> Previous price: </span> <del data-wp-text="state.priceWithoutDiscount" class="wc-block-components-product-price__regular notranslate" translate="no"></del> <span class="screen-reader-text"> Discounted price: </span> <ins data-wp-text="state.itemPrice" class="wc-block-components-product-price__value is-discounted notranslate" translate="no"></ins> <span data-wp-text="state.afterItemPrice"></span> </span> <span data-wp-bind--hidden="state.cartItemHasDiscount" class="price wc-block-components-product-price"> <span data-wp-text="state.beforeItemPrice"></span> <span data-wp-text="state.itemPrice" class="wc-block-formatted-money-amount wc-block-components-formatted-money-amount wc-block-components-product-price__value notranslate" translate="no"> </span> <span data-wp-text="state.afterItemPrice"></span> </span> </div> <div class="wc-block-components-product-metadata"> <div data-wp-watch="callbacks.itemShortDescription" > <div class="wc-block-components-product-metadata__description"></div> </div> <div data-wp-context='{"dataProperty":"item_data"}' class="wc-block-components-product-details" data-wp-bind--hidden="state.shouldHideProductDetails" > <template data-wp-each--item-data="state.cartItem.item_data" data-wp-each-key="state.cartItemDataKey" > <span data-wp-bind--hidden="state.cartItemDataAttrHidden" data-wp-bind--class="state.cartItemDataAttr.className" > <span class="wc-block-components-product-details__name" data-wp-watch="callbacks.itemDataNameInnerHTML"></span> <span class="wc-block-components-product-details__value" data-wp-watch="callbacks.itemDataValueInnerHTML"></span> <span aria-hidden="true" data-wp-bind--hidden="state.isLastCartItemDataAttr"> / </span> </span> </template> </div> <div data-wp-context='{"dataProperty":"variation"}' class="wc-block-components-product-details" data-wp-bind--hidden="state.shouldHideProductDetails" > <template data-wp-each--item-data="state.cartItem.variation" data-wp-each-key="state.cartItemDataKey" > <span data-wp-bind--hidden="state.cartItemDataAttrHidden" data-wp-bind--class="state.cartItemDataAttr.className" > <span class="wc-block-components-product-details__name" data-wp-text="state.cartItemDataAttr.name"></span> <span class="wc-block-components-product-details__value" data-wp-text="state.cartItemDataAttr.value"></span> <span aria-hidden="true" data-wp-bind--hidden="state.isLastCartItemDataAttr"> / </span> </span> </template> </div> </div> <div class="wc-block-cart-item__quantity"> <div class="wc-block-components-quantity-selector" data-wp-bind--hidden="state.cartItem.sold_individually"> <input data-wp-on--input="actions.overrideInvalidQuantity" data-wp-on--change="actions.changeQuantity" data-wp-bind--aria-label="state.quantityDescriptionLabel" data-wp-bind--min="state.cartItem.quantity_limits.minimum" data-wp-bind--max="state.cartItem.quantity_limits.maximum" data-wp-bind--value="state.cartItem.quantity" data-wp-bind--readonly="!state.cartItem.quantity_limits.editable" class="wc-block-components-quantity-selector__input" type="number" step="1" > <button data-wp-bind--disabled="state.minimumReached" data-wp-on--click="actions.decrementQuantity" data-wp-bind--aria-label="state.reduceQuantityLabel" data-wp-bind--hidden="!state.cartItem.quantity_limits.editable" class="wc-block-components-quantity-selector__button wc-block-components-quantity-selector__button--minus" > − </button> <button data-wp-bind--disabled="state.maximumReached" data-wp-on--click="actions.incrementQuantity" data-wp-bind--aria-label="state.increaseQuantityLabel" data-wp-bind--hidden="!state.cartItem.quantity_limits.editable" class="wc-block-components-quantity-selector__button wc-block-components-quantity-selector__button--plus" > + </button> </div> <button data-wp-bind--hidden="!state.itemShowRemoveItemLink" data-wp-on--click="actions.removeItemFromCart" data-wp-bind--aria-label="state.removeFromCartLabel" class="wc-block-cart-item__remove-link" > <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z"/> </svg> </button> </div> </div> </td> <td class="wc-block-cart-item__total"> <div class="wc-block-cart-item__total-price-and-sale-badge-wrapper"> <span class="price wc-block-components-product-price"> <span data-wp-text="state.lineItemTotal" class="wc-block-formatted-money-amount wc-block-components-formatted-money-amount wc-block-components-product-price__value notranslate" translate="no"> </span> </span> <div data-wp-bind--hidden="!state.cartItemHasDiscount" class="wc-block-components-product-badge wc-block-components-sale-badge" > Save <span data-wp-text="state.lineItemDiscount" class="wc-block-formatted-money-amount wc-block-components-formatted-money-amount"></span> </div> </div> </td> </tr> </template> </tbody> </table> </div> </div> <div data-block-name="woocommerce/mini-cart-footer-block" class="wc-block-mini-cart__footer wp-block-woocommerce-mini-cart-footer-block" data-wp-interactive="woocommerce/mini-cart-footer-block"> <div class="wc-block-components-totals-item wc-block-mini-cart__footer-subtotal"> <span class="wc-block-components-totals-item__label"> Subtotal </span> <span data-wp-text="woocommerce/mini-cart::state.formattedSubtotal" class="wc-block-formatted-money-amount wc-block-components-formatted-money-amount wc-block-components-totals-item__value notranslate">$0.00</span> <div class="wc-block-components-totals-item__description"> Shipping and discounts calculated at checkout. </div> </div> <div class="wc-block-mini-cart__footer-actions"> <a data-block-name="woocommerce/mini-cart-cart-button-block" class="wc-block-components-button wp-element-button wc-block-mini-cart__footer-cart is-style-outline wp-block-woocommerce-mini-cart-cart-button-block" href="https://porcelainnest.com/cart/"> <div class="wc-block-components-button__text"> View my cart </div> </a> <a data-block-name="woocommerce/mini-cart-checkout-button-block" class="wc-block-components-button wp-element-button wc-block-mini-cart__footer-checkout wp-block-woocommerce-mini-cart-checkout-button-block" href="https://porcelainnest.com/checkout/"> <div class="wc-block-components-button__text"> Go to checkout </div> </a> </div> </div> </div> <div aria-hidden="true" hidden data-block-name="woocommerce/empty-mini-cart-contents-block" class="wp-block-woocommerce-empty-mini-cart-contents-block" data-wp-bind--aria-hidden="!state.cartIsEmpty" data-wp-bind--hidden="!state.cartIsEmpty" data-wp-interactive="woocommerce/mini-cart"> <div class="wc-block-mini-cart__empty-cart-wrapper"> <p class="has-text-align-center wp-block-paragraph"><strong>Your cart is currently empty!</strong></p> <div data-block-name="woocommerce/mini-cart-shopping-button-block" class="wp-block-button has-text-align-center"> <a href="https://porcelainnest.com/" class="wc-block-components-button wp-element-button wc-block-mini-cart__shopping-button wp-block-woocommerce-mini-cart-shopping-button-block" > <div class="wc-block-components-button__text"> Start shopping </div> </a> </div> </div> </div> </div> </div> </div> </div> </div> <script> (function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })(); </script> <style id="wp-interactivity-router-animations-inline-css"> .wp-interactivity-router-loading-bar { position: fixed; top: 0; left: 0; margin: 0; padding: 0; width: 100vw; max-width: 100vw !important; height: 4px; background-color: #000; opacity: 0 } .wp-interactivity-router-loading-bar.start-animation { animation: wp-interactivity-router-loading-bar-start-animation 30s cubic-bezier(0.03, 0.5, 0, 1) forwards } .wp-interactivity-router-loading-bar.finish-animation { animation: wp-interactivity-router-loading-bar-finish-animation 300ms ease-in } @keyframes wp-interactivity-router-loading-bar-start-animation { 0% { transform: scaleX(0); transform-origin: 0 0; opacity: 1 } 100% { transform: scaleX(1); transform-origin: 0 0; opacity: 1 } } @keyframes wp-interactivity-router-loading-bar-finish-animation { 0% { opacity: 1 } 50% { opacity: 1 } 100% { opacity: 0 } } /*# sourceURL=wp-interactivity-router-animations-inline-css */ </style> <script async data-wp-strategy="async" fetchpriority="low" id="comment-reply-js" src="https://porcelainnest.com/wp-includes/js/comment-reply.min.js?ver=7.1"></script> <script id="sourcebuster-js-js" src="https://porcelainnest.com/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=11.0.1"></script> <script id="wc-order-attribution-js-extra"> var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https://porcelainnest.com/wp-admin/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}}; //# sourceURL=wc-order-attribution-js-extra </script> <script id="wc-order-attribution-js" src="https://porcelainnest.com/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=11.0.1"></script> <script id="wp-emoji-settings" type="application/json"> {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://porcelainnest.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1"}} </script> <script type="module"> /*! This file is auto-generated */ var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); //# sourceURL=https://porcelainnest.com/wp-includes/js/wp-emoji-loader.min.js </script> <div style="position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip-path:inset(50%);border:0;word-wrap:normal !important;"><p id="a11y-speak-intro-text" class="a11y-speak-intro-text" hidden>Notifications</p><div id="a11y-speak-assertive" class="a11y-speak-region" aria-live="assertive" aria-relevant="additions text" aria-atomic="true"></div><div id="a11y-speak-polite" class="a11y-speak-region" aria-live="polite" aria-relevant="additions text" aria-atomic="true"></div></div></body> </html>