1<!doctype html> 2<html lang="en-US" prefix="og: https://ogp.me/ns#"> 3<head> 4<meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> 6<meta name="theme-color" content="#FFFFFF" media="(prefers-color-scheme: light)"> 7<meta name="theme-color" content="#0A0E1A" media="(prefers-color-scheme: dark)"> 8<link rel="profile" href="https://gmpg.org/xfn/11"> 9<link rel="pingback" href="https://wpfactory.com/xmlrpc.php"> 10 11<!-- Pre-paint theme set: prevents dark-mode flash. Defaults to light on first visit; respects saved preference on return. -->
12<script>(function(){try{var s=localStorage.getItem('wpf-theme');document.documentElement.setAttribute('data-theme',s||'light');}catch(e){}})();</script>
12 13 14<!-- Fonts: Inter (UI), JetBrains Mono (numerics), Caveat (accents) --> 15<link rel="preconnect" href="https://fonts.googleapis.com"> 16<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 17<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=Caveat:wght@600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet"> 18 19<!-- Google Tag Manager --> 20
20<script>
vendor: 331 bytes, lines 20-24
20(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 21 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 22 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 23 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 24 })(window,document,'script','dataLayer','
24GTM-K2S23LK
vendor: 3 bytes, line 24
24');
24</script>
24 25 <!-- End Google Tag Manager -->
25<script data-cfasync="false" data-cookieconsent="ignore" data-ezscrex="false" data-no-defer="1" data-pagespeed-no-defer> 26var ctPublicFunctions = {"_ajax_nonce":"0863f401ff","_rest_nonce":"a989a8ebef","_ajax_url":"\/wp-admin\/admin-ajax.php","_rest_url":"https:\/\/wpfactory.com\/wp-json\/","data__cookies_type":"alternative","data__ajax_type":"rest","bot_detector_enabled":true,"data__frontend_data_log_enabled":1,"data__bot_detector_enabled":1,"cookiePrefix":"","wprocket_detected":false,"host_url":"wpfactory.com","text__ee_click_to_select":"Click to select the whole data","text__ee_original_email":"The complete one is","text__ee_got_it":"Got it","text__ee_blocked":"Blocked","text__ee_cannot_connect":"Cannot connect","text__ee_cannot_decode":"Can not decode email. Unknown reason","text__ee_email_decoder":"CleanTalk email decoder","text__ee_wait_for_decoding":"The magic is on the way!","text__ee_decoding_process":"Please wait a few seconds while we decode the contact data."} 27</script>
vendor: 1 bytes, line 27
27
28<script data-cfasync="false" data-cookieconsent="ignore" data-ezscrex="false" data-no-defer="1" data-pagespeed-no-defer> 29var ctPublic = {"_ajax_nonce":"0863f401ff","settings__forms__check_internal":"1","settings__forms__check_external":"1","settings__forms__force_protection":"0","settings__forms__search_test":"1","settings__forms__wc_add_to_cart":"0","bot_detector_enabled":true,"settings__sfw__anti_crawler":0,"blog_home":"https:\/\/wpfactory.com\/","pixel__setting":"3","pixel__enabled":true,"pixel__url":null,"data__email_check_before_post":"1","data__email_check_exist_post":"1","data__cookies_type":"alternative","data__key_is_ok":true,"data__visible_fields_required":true,"wl_brandname":"Anti-Spam by CleanTalk","wl_brandname_short":"CleanTalk","ct_checkjs_key":"ac714095a4f56fd6a5081a67cfeee52db5a13ad307ee23ff8ac647d7ca5ed197","emailEncoderPassKey":"5975e56d77b6f8f4e231059643f34555","bot_detector_forms_excluded":"W10=","advancedCacheExists":false,"varnishCacheExists":true,"wc_ajax_add_to_cart":true,"theRealPerson":{"phrases":{"trpHeading":"The Real Person Badge!","trpContent1":"Verified as a real person and not a bot. The comment was approved without pre-moderation.","trpContent2":" Anti-Spam by CleanTalk","trpContentLearnMore":"Learn more"},"trpContentLink":"https:\/\/cleantalk.org\/help\/the-real-person?utm_id=&utm_term=&utm_source=admin_side&utm_medium=trp_badge&utm_content=trp_badge_link_click&utm_campaign=apbct_links","imgPersonUrl":"https:\/\/wpfactory.com\/wp-content\/plugins\/cleantalk-spam-protect\/css\/images\/real_user.svg","imgShieldUrl":"https:\/\/wpfactory.com\/wp-content\/plugins\/cleantalk-spam-protect\/css\/images\/shield.svg"}} 30</script>
30 31 32<!-- Google Tag Manager for WordPress by gtm4wp.com -->
33<script data-cfasync="false" data-pagespeed-no-defer> 34 var gtm4wp_datalayer_name = "dataLayer"; 35 var dataLayer = dataLayer || []; 36 (function(){function gtag(){dataLayer.push(arguments);}gtag('set', 'developer_id.dNGJiYT', true);})(); 37 const gtm4wp_use_sku_instead = 1; 38 const gtm4wp_currency = "USD"; 39 const gtm4wp_product_per_impression = 10; 40 const gtm4wp_clear_ecommerce = false; 41 const gtm4wp_datalayer_max_timeout = 2000; 42 const gtm4wp_console_log = true; 43 const gtm4wp_remarketing_prod_id_prefix = ""; 44 const gtm4wp_list_attribution = 0; 45 const gtm4wp_checkoutwc = 0; 46</script>
46 47<!-- End Google Tag Manager for WordPress by gtm4wp.com --> <link rel="preload" 48 href="https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2" 49 as="font" 50 type="font/woff2" 51 crossorigin> 52 53<!-- Search Engine Optimization by Rank Math - https://rankmath.com/ --> 54<title>WooCommerce Tips & Tutorials - WPFactory Blog</title> 55<meta name="description" content="Discover expert WooCommerce tips, tutorials, and strategies to optimize your store. Learn from real-world plugin development insights and ecommerce best practices."/> 56<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/> 57<link rel="canonical" href="https://wpfactory.com/blog/" /> 58<link rel="next" href="https://wpfactory.com/blog/page/2/" /> 59<meta property="og:locale" content="en_US" /> 60<meta property="og:type" content="website" /> 61<meta property="og:title" content="WooCommerce Tips & Tutorials - WPFactory Blog" /> 62<meta property="og:description" content="Discover expert WooCommerce tips, tutorials, and strategies to optimize your store. Learn from real-world plugin development insights and ecommerce best practices." /> 63<meta property="og:url" content="https://wpfactory.com/blog/" /> 64<meta property="og:site_name" content="WPFactory" /> 65<meta name="twitter:card" content="summary_large_image" /> 66<meta name="twitter:title" content="WooCommerce Tips & Tutorials - WPFactory Blog" /> 67<meta name="twitter:description" content="Discover expert WooCommerce tips, tutorials, and strategies to optimize your store. Learn from real-world plugin development insights and ecommerce best practices." />
68<script type="application/ld+json" class="rank-math-schema">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://wpfactory.com/#organization","name":"WPFactory","url":"https://wpfactory.com/","description":"WPFactory builds WooCommerce and WordPress plugins for online stores: 50+ plugins for pricing, quantities, checkout, payments, shipping, tax and store management.","foundingDate":"2013","sameAs":["https://profiles.wordpress.org/wpcodefactory/","https://github.com/wpcodefactory","https://www.linkedin.com/company/wpfactory","https://web.facebook.com/wordpresscodefactory"]},{"@type":"WebSite","@id":"https://wpfactory.com/#website","url":"https://wpfactory.com","name":"WPFactory","alternateName":"WP & WC Plugins","publisher":{"@id":"https://wpfactory.com/#organization"},"inLanguage":"en-US"},{"@type":"CollectionPage","@id":"https://wpfactory.com/blog/#webpage","url":"https://wpfactory.com/blog/","name":"WooCommerce Tips & Tutorials - WPFactory Blog","isPartOf":{"@id":"https://wpfactory.com/#website"},"inLanguage":"en-US"}]}</script>
68 69<!-- /Rank Math WordPress SEO plugin --> 70 71<link rel='dns-prefetch' href='//fd.cleantalk.org' /> 72<link rel="alternate" type="application/rss+xml" title="WPFactory » Feed" href="https://wpfactory.com/feed/" /> 73<link rel="alternate" type="application/rss+xml" title="WPFactory » Comments Feed" href="https://wpfactory.com/comments/feed/" /> 74<!-- wpfactory.com is managing ads with Advanced Ads 2.0.26 â https://wpadvancedads.com/ -->
74<script id="wpfac-ready"> 75 window.advanced_ads_ready=function(e,a){a=a||"complete";var d=function(e){return"interactive"===a?"loading"!==e:"complete"===e};d(document.readyState)?e():document.addEventListener("readystatechange",(function(a){d(a.target.readyState)&&e()}),{once:"interactive"===a})},window.advanced_ads_ready_queue=window.advanced_ads_ready_queue||[]; </script>
75 76 <style id="wp-img-auto-sizes-contain-inline-css"> 77img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 78/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 79</style> 80<style id="wp-block-library-inline-css"> 81:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
81--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 82 83/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 84</style> 85<style id="classic-theme-styles-inline-css"> 86/*! This file is auto-generated */ 87.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 88/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 89</style> 90 91<link rel='stylesheet' id='storefront-gutenberg-blocks-css' href='https://wpfactory.com/wp-content/themes/storefront/assets/css/base/gutenberg-blocks.css?ver=4.6.2' media='all' /> 92<style id="storefront-gutenberg-blocks-inline-css"> 93 94 .wp-block-button__link:not(.has-text-color) { 95 color: #333333; 96 } 97 98 .wp-block-button__link:not(.has-text-color):hover, 99 .wp-block-button__link:not(.has-text-color):focus, 100 .wp-block-button__link:not(.has-text-color):active { 101 color: #333333; 102 } 103 104 .wp-block-button__link:not(.has-background) { 105 background-color: #eeeeee; 106 } 107 108 .wp-block-button__link:not(.has-background):hover, 109 .wp-block-button__link:not(.has-background):focus, 110 .wp-block-button__link:not(.has-background):active { 111 border-color: #d5d5d5; 112 background-color: #d5d5d5; 113 } 114 115 .wc-block-grid__products .wc-block-grid__product .wp-block-button__link { 116 background-color: #eeeeee; 117 border-color: #eeeeee; 118 color: #333333; 119 } 120 121 .wp-block-quote footer, 122 .wp-block-quote cite, 123 .wp-block-quote__citation { 124 color: #6d6d6d; 125 } 126 127 .wp-block-pullquote cite, 128 .wp-block-pullquote footer, 129 .wp-block-pullquote__citation { 130 color: #6d6d6d; 131 } 132 133 .wp-block-image figcaption { 134 color: #6d6d6d; 135 } 136 137 .wp-block-separator.is-style-dots::before { 138 color: #333333; 139 } 140 141 .wp-block-file a.wp-block-file__button { 142 color: #333333; 143 background-color: #eeeeee; 144 border-color: #eeeeee; 145 } 146 147 .wp-block-file a.wp-block-file__button:hover, 148 .wp-block-file a.wp-block-file__button:focus, 149 .wp-block-file a.wp-block-file__button:active { 150 color: #333333; 151 background-color: #d5d5d5; 152 } 153 154 .wp-block-code, 155 .wp-block-preformatted pre { 156 color: #6d6d6d; 157 } 158 159 .wp-block-table:not( .has-background ):not( .is-style-stripes ) tbody tr:nth-child(2n) td { 160 background-color: #fdfdfd; 161 } 162 163 .wp-block-cover .wp-block-cover__inner-container h1:not(.has-text-color), 164 .wp-block-cover .wp-block-cover__inner-container h2:not(.has-text-color), 165 .wp-block-cover .wp-block-cover__inner-container h3:not(.has-text-color), 166 .wp-block-cover .wp-block-cover__inner-container h4:not(.has-text-color), 167 .wp-block-cover .wp-block-cover__inner-container h5:not(.has-text-color), 168 .wp-block-cover .wp-block-cover__inner-container h6:not(.has-text-color) { 169 color: #000000; 170 } 171 172 div.wc-block-components-price-slider__range-input-progress, 173 .rtl .wc-block-components-price-slider__range-input-progress { 174 --range-color: #7f54b3; 175 } 176 177 /* Target only IE11 */ 178 @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { 179 .wc-block-components-price-slider__range-input-progress { 180 background: #7f54b3; 181 } 182 } 183 184 .wc-block-components-button:not(.is-link) { 185 background-color: #333333; 186 color: #ffffff; 187 } 188 189 .wc-block-components-button:not(.is-link):hover, 190 .wc-block-components-button:not(.is-link):focus, 191 .wc-block-components-button:not(.is-link):active { 192 background-color: #1a1a1a; 193 color: #ffffff; 194 } 195 196 .wc-block-components-button:not(.is-link):disabled { 197 background-color: #333333; 198 color: #ffffff; 199 } 200 201 .wc-block-cart__submit-container { 202 background-color: #ffffff; 203 } 204 205 .wc-block-cart__submit-container::before { 206 color: rgba(220,220,220,0.5); 207 } 208 209 .wc-block-components-order-summary-item__quantity { 210 background-color: #ffffff; 211 border-color: #6d6d6d; 212 box-shadow: 0 0 0 2px #ffffff; 213 color: #6d6d6d; 214 } 215 216/*# sourceURL=storefront-gutenberg-blocks-inline-css */ 217</style> 218<link rel='stylesheet' id='bbp-default-css' href='https://wpfactory.com/wp-content/plugins/bbpress/templates/default/css/bbpress.min.css?ver=2.6.18' media='all' /> 219<link rel='stylesheet' id='cleantalk-public-css-css' href='https://wpfactory.com/wp-content/plugins/cleantalk-spam-protect/css/cleantalk-public.min.css?ver=6.88_1789650612' media='all' /> 220<link rel='stylesheet' id='cleantalk-email-decoder-css-css' href='https://wpfactory.com/wp-content/plugins/cleantalk-spam-protect/css/cleantalk-email-decoder.min.css?ver=6.88_1789650612' media='all' /> 221<link rel='stylesheet' id='cleantalk-trp-css-css' href='https://wpfactory.com/wp-content/plugins/cleantalk-spam-protect/css/cleantalk-trp.min.css?ver=6.88_1789650612' media='all' /> 222<style id="woocommerce-inline-inline-css"> 223.woocommerce form .form-row .required { visibility: visible; } 224/*# sourceURL=woocommerce-inline-inline-css */ 225</style> 226<link rel='stylesheet' id='affwp-forms-css' href='https://wpfactory.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.36.3' media='all' /> 227<link rel='stylesheet' id='eztoc-css' href='https://wpfactory.com/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.88' media='all' /> 228<style id="eztoc-inline-css"> 229div#ez-toc-container .ez-toc-title, .ez-toc-split-section .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title, .ez-toc-split-section .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li , div#ez-toc-container ul li a, .ez-toc-split-section ul li , .ez-toc-split-section ul li a {font-size: 95%;}div#ez-toc-container ul li , div#ez-toc-container ul li a, .ez-toc-split-section ul li , .ez-toc-split-section ul li a {font-weight: 500;}div#ez-toc-container nav ul ul li, .ez-toc-split-section nav ul ul li {font-size: 90%;}.ez-toc-box-title {font-weight: bold; margin-bottom: 10px; text-align: center; text-transform: uppercase; letter-spacing: 1px; color: #666; padding-bottom: 5px;position:absolute;top:-4%;left:5%;background-color: inherit;transition: top 0.3s ease;}.ez-toc-box-title.toc-closed {top:-25%;} 230.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, '.', decimal) '. ';display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, '.', decimal) '. ';display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
231/*# sourceURL=eztoc-inline-css */ 232</style> 233<link rel='stylesheet' id='wcsatt-css-css' href='https://wpfactory.com/wp-content/plugins/woocommerce-subscriptions/build/apfs-frontend.css?ver=9.2.0' media='all' /> 234<link rel='stylesheet' id='storefront-style-css' href='https://wpfactory.com/wp-content/themes/storefront/style.css?ver=4.6.2' media='all' /> 235<style id="storefront-style-inline-css"> 236 237 .main-navigation ul li a, 238 .site-title a, 239 ul.menu li a, 240 .site-branding h1 a, 241 button.menu-toggle, 242 button.menu-toggle:hover, 243 .handheld-navigation .dropdown-toggle { 244 color: #333333; 245 } 246 247 button.menu-toggle, 248 button.menu-toggle:hover { 249 border-color: #333333; 250 } 251 252 .main-navigation ul li a:hover, 253 .main-navigation ul li:hover > a, 254 .site-title a:hover, 255 .site-header ul.menu li.current-menu-item > a { 256 color: #747474; 257 } 258 259 table:not( .has-background ) th { 260 background-color: #f8f8f8; 261 } 262 263 table:not( .has-background ) tbody td { 264 background-color: #fdfdfd; 265 } 266 267 table:not( .has-background ) tbody tr:nth-child(2n) td, 268 fieldset, 269 fieldset legend { 270 background-color: #fbfbfb; 271 } 272 273 .site-header, 274 .secondary-navigation ul ul, 275 .main-navigation ul.menu > li.menu-item-has-children:after, 276 .secondary-navigation ul.menu ul, 277 .storefront-handheld-footer-bar, 278 .storefront-handheld-footer-bar ul li > a, 279 .storefront-handheld-footer-bar ul li.search .site-search, 280 button.menu-toggle, 281 button.menu-toggle:hover { 282 background-color: #ffffff; 283 } 284 285 p.site-description, 286 .site-header, 287 .storefront-handheld-footer-bar { 288 color: #404040; 289 } 290 291 button.menu-toggle:after, 292 button.menu-toggle:before, 293 button.menu-toggle span:before { 294 background-color: #333333; 295 } 296 297 h1, h2, h3, h4, h5, h6, .wc-block-grid__product-title { 298 color: #333333; 299 } 300 301 .widget h1 { 302 border-bottom-color: #333333; 303 } 304 305 body, 306 .secondary-navigation a { 307 color: #6d6d6d; 308 } 309 310 .widget-area .widget a, 311 .hentry .entry-header .posted-on a, 312 .hentry .entry-header .post-author a, 313 .hentry .entry-header .post-comments a, 314 .hentry .entry-header .byline a { 315 color: #727272; 316 } 317 318 a { 319 color: #7f54b3; 320 } 321 322 a:focus, 323 button:focus, 324 .button.alt:focus, 325 input:focus, 326 textarea:focus, 327 input[type="button"]:focus, 328 input[type="reset"]:focus, 329 input[type="submit"]:focus, 330 input[type="email"]:focus, 331 input[type="tel"]:focus, 332 input[type="url"]:focus, 333 input[type="password"]:focus, 334 input[type="search"]:focus { 335 outline-color: #7f54b3; 336 } 337 338 button, input[type="button"], input[type="reset"], input[type="submit"], .button, .widget a.button { 339 background-color: #eeeeee; 340 border-color: #eeeeee; 341 color: #333333; 342 } 343 344 button:hover, input[type="button"]:hover, input[type="reset"]:hover, input[type="submit"]:hover, .button:hover, .widget a.button:hover { 345 background-color: #d5d5d5; 346 border-color: #d5d5d5; 347 color: #333333; 348 } 349 350 button.alt, input[type="button"].alt, input[type="reset"].alt, input[type="submit"].alt, .button.alt, .widget-area .widget a.button.alt { 351 background-color: #333333; 352 border-color: #333333; 353 color: #ffffff; 354 } 355 356 button.alt:hover, input[type="button"].alt:hover, input[type="reset"].alt:hover, input[type="submit"].alt:hover, .button.alt:hover, .widget-area .widget a.button.alt:hover { 357 background-color: #1a1a1a; 358 border-color: #1a1a1a; 359 color: #ffffff; 360 } 361 362 .pagination .page-numbers li .page-numbers.current { 363 background-color: #e6e6e6; 364 color: #636363; 365 } 366 367 #comments .comment-list .comment-content .comment-text { 368 background-color: #f8f8f8; 369 } 370 371 .site-footer { 372 background-color: #f0f0f0; 373 color: #6d6d6d; 374 } 375 376 .site-footer a:not(.button):not(.components-button) { 377 color: #333333; 378 } 379 380 .site-footer .storefront-handheld-footer-bar a:not(.button):not(.components-button) { 381 color: #333333; 382 } 383 384 .site-footer h1, .site-footer h2, .site-footer h3, .site-footer h4, .site-footer h5, .site-footer h6, .site-footer .widget .widget-title, .site-footer .widget .widgettitle { 385 color: #333333; 386 } 387 388 .page-template-template-homepage.has-post-thumbnail .type-page.has-post-thumbnail .entry-title { 389 color: #000000; 390 } 391 392 .page-template-template-homepage.has-post-thumbnail .type-page.has-post-thumbnail .entry-content { 393 color: #000000; 394 } 395 396 @media screen and ( min-width: 768px ) { 397 .secondary-navigation ul.menu a:hover { 398 color: #595959; 399 } 400 401 .secondary-navigation ul.menu a { 402 color: #404040; 403 } 404 405 .main-navigation ul.menu ul.sub-menu, 406 .main-navigation ul.nav-menu ul.children { 407 background-color: #f0f0f0; 408 } 409 410 .site-header { 411 border-bottom-color: #f0f0f0; 412 } 413 } 414/*# sourceURL=storefront-style-inline-css */ 415</style> 416<link rel='stylesheet' id='storefront-icons-css' href='https://wpfactory.com/wp-content/themes/storefront/assets/css/base/icons.css?ver=4.6.2' media='all' /> 417<link rel='stylesheet' id='wpft-splide-css-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/vendor/splide/splide.min.css?ver=7.1.2' media='all' /> 418<link rel='stylesheet' id='storefront-woocommerce-style-css' href='https://wpfactory.com/wp-content/themes/storefront/assets/css/woocommerce/woocommerce.css?ver=4.6.2' media='all' /> 419<style id="storefront-woocommerce-style-inline-css"> 420@font-face { 421 font-family: star; 422 src: url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/star.eot); 423 src: 424 url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/star.eot?#iefix) format("embedded-opentype"), 425 url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/star.woff) format("woff"), 426 url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/star.ttf) format("truetype"), 427 url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/star.svg#star) format("svg"); 428 font-weight: 400; 429 font-style: normal; 430 } 431 @font-face { 432 font-family: WooCommerce; 433 src: url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.eot); 434 src: 435 url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.eot?#iefix) format("embedded-opentype"), 436 url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.woff) format("woff"), 437 url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.ttf) format("truetype"), 438 url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.svg#WooCommerce) format("svg"); 439 font-weight: 400; 440 font-style: normal; 441 } 442 443 a.cart-contents, 444 .site-header-cart .widget_shopping_cart a { 445 color: #333333; 446 } 447 448 a.cart-contents:hover, 449 .site-header-cart .widget_shopping_cart a:hover, 450 .site-header-cart:hover > li > a { 451 color: #747474; 452 } 453 454 table.cart td.product-remove, 455 table.cart td.actions { 456 border-top-color: #ffffff; 457 } 458 459 .storefront-handheld-footer-bar ul li.cart .count { 460 background-color: #333333; 461 color: #ffffff; 462 border-color: #ffffff; 463 } 464 465 .woocommerce-tabs ul.tabs li.active a,
466 ul.products li.product .price, 467 .onsale, 468 .wc-block-grid__product-onsale, 469 .widget_search form:before, 470 .widget_product_search form:before { 471 color: #6d6d6d; 472 } 473 474 .woocommerce-breadcrumb a, 475 a.woocommerce-review-link, 476 .product_meta a { 477 color: #727272; 478 } 479 480 .wc-block-grid__product-onsale, 481 .onsale { 482 border-color: #6d6d6d; 483 } 484 485 .star-rating span:before, 486 .quantity .plus, .quantity .minus, 487 p.stars a:hover:after, 488 p.stars a:after, 489 .star-rating span:before, 490 #payment .payment_methods li input[type=radio]:first-child:checked+label:before { 491 color: #7f54b3; 492 } 493 494 .widget_price_filter .ui-slider .ui-slider-range, 495 .widget_price_filter .ui-slider .ui-slider-handle { 496 background-color: #7f54b3; 497 } 498 499 .order_details { 500 background-color: #f8f8f8; 501 } 502 503 .order_details > li { 504 border-bottom: 1px dotted #e3e3e3; 505 } 506 507 .order_details:before, 508 .order_details:after { 509 background: -webkit-linear-gradient(transparent 0,transparent 0),-webkit-linear-gradient(135deg,#f8f8f8 33.33%,transparent 33.33%),-webkit-linear-gradient(45deg,#f8f8f8 33.33%,transparent 33.33%) 510 } 511 512 #order_review { 513 background-color: #ffffff; 514 } 515 516 #payment .payment_methods > li .payment_box, 517 #payment .place-order { 518 background-color: #fafafa; 519 } 520 521 #payment .payment_methods > li:not(.woocommerce-notice) { 522 background-color: #f5f5f5; 523 } 524 525 #payment .payment_methods > li:not(.woocommerce-notice):hover { 526 background-color: #f0f0f0; 527 } 528 529 .woocommerce-pagination .page-numbers li .page-numbers.current { 530 background-color: #e6e6e6; 531 color: #636363; 532 } 533 534 .wc-block-grid__product-onsale, 535 .onsale, 536 .woocommerce-pagination .page-numbers li .page-numbers:not(.current) { 537 color: #6d6d6d; 538 } 539 540 p.stars a:before, 541 p.stars a:hover~a:before, 542 p.stars.selected a.active~a:before { 543 color: #6d6d6d; 544 } 545 546 p.stars.selected a.active:before, 547 p.stars:hover a:before, 548 p.stars.selected a:not(.active):before, 549 p.stars.selected a.active:before { 550 color: #7f54b3; 551 } 552 553 .single-product div.product .woocommerce-product-gallery .woocommerce-product-gallery__trigger { 554 background-color: #eeeeee; 555 color: #333333; 556 } 557 558 .single-product div.product .woocommerce-product-gallery .woocommerce-product-gallery__trigger:hover { 559 background-color: #d5d5d5; 560 border-color: #d5d5d5; 561 color: #333333; 562 } 563 564 .button.added_to_cart:focus, 565 .button.wc-forward:focus { 566 outline-color: #7f54b3; 567 } 568 569 .added_to_cart, 570 .site-header-cart .widget_shopping_cart a.button, 571 .wc-block-grid__products .wc-block-grid__product .wp-block-button__link { 572 background-color: #eeeeee; 573 border-color: #eeeeee; 574 color: #333333; 575 } 576 577 .added_to_cart:hover, 578 .site-header-cart .widget_shopping_cart a.button:hover, 579 .wc-block-grid__products .wc-block-grid__product .wp-block-button__link:hover { 580 background-color: #d5d5d5; 581 border-color: #d5d5d5; 582 color: #333333; 583 } 584 585 .added_to_cart.alt, .added_to_cart, .widget a.button.checkout { 586 background-color: #333333; 587 border-color: #333333; 588 color: #ffffff; 589 } 590 591 .added_to_cart.alt:hover, .added_to_cart:hover, .widget a.button.checkout:hover { 592 background-color: #1a1a1a; 593 border-color: #1a1a1a; 594 color: #ffffff; 595 } 596 597 .button.loading { 598 color: #eeeeee; 599 } 600 601 .button.loading:hover { 602 background-color: #eeeeee; 603 } 604 605 .button.loading:after { 606 color: #333333; 607 } 608 609 @media screen and ( min-width: 768px ) { 610 .site-header-cart .widget_shopping_cart, 611 .site-header .product_list_widget li .quantity { 612 color: #404040; 613 } 614 615 .site-header-cart .widget_shopping_cart .buttons, 616 .site-header-cart .widget_shopping_cart .total { 617 background-color: #f5f5f5; 618 } 619 620 .site-header-cart .widget_shopping_cart { 621 background-color: #f0f0f0; 622 } 623 } 624 .storefront-product-pagination a { 625 color: #6d6d6d; 626 background-color: #ffffff; 627 } 628 .storefront-sticky-add-to-cart { 629 color: #6d6d6d; 630 background-color: #ffffff; 631 } 632 633 .storefront-sticky-add-to-cart a:not(.button) { 634 color: #333333; 635 } 636/*# sourceURL=storefront-woocommerce-style-inline-css */ 637</style> 638<link rel='stylesheet' id='wpfactory-style-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/css/frontend.min.css?ver=2.0.0' media='all' /> 639<link rel='stylesheet' id='wpfactory-carousal-style-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/vendor/flickity-carousal/flickity-carousal.min.css?ver=2.0.0' media='all' /> 640<link rel='stylesheet' id='wpfactory-globals-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/css/wpfactory-globals.css?ver=1.2.9' media='all' /> 641<link rel='stylesheet' id='storefront-child-style-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/style.css?ver=2.0.0' media='all' /> 642<link rel='stylesheet' id='storefront-woocommerce-brands-style-css' href='https://wpfactory.com/wp-content/themes/storefront/assets/css/woocommerce/extensions/brands.css?ver=4.6.2' media='all' /> 643<link rel='stylesheet' id='wpf-blog-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/css/blog.css?ver=1782249326' media='all' /> 644<link rel='stylesheet' id='wpfactory-snippets-bbpress-css' href='https://wpfactory.com/wp-content/plugins/wpfactory-snippets/snippets/bbpress/bbpress.css?ver=2.6.9' media='all' />
645<script id="apbct-public-bundle_full-protection.min-js-js" src="https://wpfactory.com/wp-content/plugins/cleantalk-spam-protect/js/apbct-public-bundle_full-protection.min.js?ver=6.88_1789650612"></script>
vendor: 1 bytes, line 645
645
646<script async data-wp-strategy="async" id="ct_bot_detector-js" src="https://fd.cleantalk.org/ct-bot-detector-wrapper.js?ver=6.88"></script>
vendor: 1 bytes, line 646
646
647<script id="jquery-core-js" src="https://wpfactory.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 647
647
648<script id="jquery-migrate-js" src="https://wpfactory.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 648
648
649<script data-wp-strategy="defer" defer id="wc-jquery-blockui-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?ver=2.7.0-wc.11.1.2"></script>
vendor: 1 bytes, line 649
649
650<script id="wc-add-to-cart-js-extra"> 651var wc_add_to_cart_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https://wpfactory.com/cart/","is_cart":"","cart_redirect_after_add":"yes"}; 652//# sourceURL=wc-add-to-cart-js-extra 653</script>
vendor: 1 bytes, line 653
653
654<script data-wp-strategy="defer" defer id="wc-add-to-cart-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 654
654
655<script data-wp-strategy="defer" defer id="wc-js-cookie-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver=2.1.4-wc.11.1.2"></script>
vendor: 1 bytes, line 655
655
656<script id="woocommerce-js-extra"> 657var woocommerce_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_password_show":"Show password","i18n_password_hide":"Hide password"}; 658//# sourceURL=woocommerce-js-extra 659</script>
vendor: 1 bytes, line 659
659
660<script data-wp-strategy="defer" defer id="woocommerce-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 660
660
661<script data-wp-strategy="defer" id="wc-jquery-cookie-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/jquery-cookie/jquery.cookie.min.js?ver=1.4.1-wc.11.1.2"></script>
vendor: 1 bytes, line 661
661
662<script id="jquery-cookie-js-extra"> 663var affwp_scripts = {"ajaxurl":"https://wpfactory.com/wp-admin/admin-ajax.php"}; 664//# sourceURL=jquery-cookie-js-extra 665</script>
vendor: 1 bytes, line 665
665
666<script id="affwp-tracking-js-extra"> 667var affwp_debug_vars = {"integrations":{"contactform7":"Contact Form 7","woocommerce":"WooCommerce"},"version":"2.36.3","currency":"USD","ref_cookie":"affwp_ref","visit_cookie":"affwp_ref_visit_id","campaign_cookie":"affwp_campaign"}; 668//# sourceURL=affwp-tracking-js-extra 669</script>
vendor: 1 bytes, line 669
669
670<script id="affwp-tracking-js" src="https://wpfactory.com/wp-content/plugins/affiliate-wp/assets/js/tracking.min.js?ver=2.36.3"></script>
vendor: 1 bytes, line 670
670
671<script id="wc-cart-fragments-js-extra"> 672var wc_cart_fragments_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","cart_hash_key":"wc_cart_hash_e75229be763824a8104e3fb7f4f46e42","fragment_name":"wc_fragments_e75229be763824a8104e3fb7f4f46e42","request_timeout":"5000"}; 673//# sourceURL=wc-cart-fragments-js-extra 674</script>
vendor: 1 bytes, line 674
674
675<script data-wp-strategy="defer" defer id="wc-cart-fragments-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 675
675
676<script id="advanced-ads-advanced-js-js-extra"> 677var advads_options = {"blog_id":"1","privacy":{"enabled":false,"state":"not_needed"}}; 678//# sourceURL=advanced-ads-advanced-js-js-extra 679</script>
vendor: 1 bytes, line 679
679
680<script id="advanced-ads-advanced-js-js" src="https://wpfactory.com/wp-content/plugins/advanced-ads/assets/dist/advanced.js?ver=4e4c7549b1472da4abe5"></script>
vendor: 1 bytes, line 680
680
681<script id="utils-js-extra"> 682var userSettings = {"url":"/","uid":"0","time":"1790680354","secure":"1"}; 683//# sourceURL=utils-js-extra 684</script>
vendor: 1 bytes, line 684
684
685<script id="utils-js" src="https://wpfactory.com/wp-includes/js/utils.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 685
685
686<script id="wpft-splide-js-js" src="https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/vendor/splide/splide.min.js?ver=7.1.2"></script>
686 687<link rel="https://api.w.org/" href="https://wpfactory.com/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://wpfactory.com/xmlrpc.php?rsd" /> 688<meta name="generator" content="WordPress 7.1.2" /> 689
689<script type="text/javascript"> 690 var AFFWP = AFFWP || {}; 691 AFFWP.referral_var = 'ref'; 692 AFFWP.expiration = 30; 693 AFFWP.debug = 0; 694 695 696 AFFWP.referral_credit_last = 1; 697 </script>
697 698 699<!-- Google Tag Manager for WordPress by gtm4wp.com --> 700<!-- GTM Container placement set to off -->
701<script data-cfasync="false" data-pagespeed-no-defer> 702 var dataLayer_content = {"pagePostType":"bloghome","customerTotalOrders":0,"customerTotalOrderValue":0,"customerFirstName":"","customerLastName":"","customerBillingFirstName":"","customerBillingLastName":"","customerBillingCompany":"","customerBillingAddress1":"","customerBillingAddress2":"","customerBillingCity":"","customerBillingState":"","customerBillingPostcode":"","customerBillingCountry":"","customerBillingEmail":"","customerBillingEmailHash":"","customerBillingPhone":"","customerShippingFirstName":"","customerShippingLastName":"","customerShippingCompany":"","customerShippingAddress1":"","customerShippingAddress2":"","customerShippingCity":"","customerShippingState":"","customerShippingPostcode":"","customerShippingCountry":"","cartContent":{"totals":{"applied_coupons":[],"discount_total":0,"subtotal":0,"total":0},"items":[]}}; 703 dataLayer.push( dataLayer_content ); 704</script>
vendor: 1 bytes, line 704
704
705<script data-cfasync="false" data-pagespeed-no-defer> 706 console.warn && console.warn("[GTM4WP] Google Tag Manager container code placement set to OFF !!!"); 707 console.warn && console.warn("[GTM4WP] Data layer codes are active but GTM container must be loaded using custom coding !!!"); 708</script>
708 709<!-- End Google Tag Manager for WordPress by gtm4wp.com --><style> 710 #bbpress-forums div.bbp-search-form { 711 display: none; 712 } 713 </style> <noscript><style>.woocommerce-product-gallery{ opacity: 1 !important; }</style></noscript> 714
714<script type="text/javascript"> 715 var advadsCfpQueue = []; 716 var advadsCfpAd = function( adID ) { 717 if ( 'undefined' === typeof advadsProCfp ) { 718 advadsCfpQueue.push( adID ) 719 } else { 720 advadsProCfp.addElement( adID ) 721 } 722 } 723 </script>
723 724 <link rel="icon" href="https://wpfactory.com/wp-content/uploads/cropped-WPF-favicon-32x32.png" sizes="32x32" /> 725<link rel="icon" href="https://wpfactory.com/wp-content/uploads/cropped-WPF-favicon-192x192.png" sizes="192x192" /> 726<link rel="apple-touch-icon" href="https://wpfactory.com/wp-content/uploads/cropped-WPF-favicon-180x180.png" /> 727<meta name="msapplication-TileImage" content="https://wpfactory.com/wp-content/uploads/cropped-WPF-favicon-270x270.png" /> 728<style id="global-styles-inline-css"> 729:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
729--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 14px;--wp--preset--font-size--medium: 23px;--wp--preset--font-size--large: 26px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--normal: 16px;--wp--preset--font-size--huge: 37px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.wp-site-blocks) > * { margin-block-start: 24px; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 24px; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 24px;}:root :where(.is-layout-grid){gap: 24px;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
729.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-normal-font-size{font-size: var(--wp--preset--font-size--normal) !important;}.has-huge-font-size{font-size: var(--wp--preset--font-size--huge) !important;} 730/*# sourceURL=global-styles-inline-css */ 731</style> 732 733</head> 734 735<body class="blog wp-custom-logo wp-embed-responsive wp-theme-storefront wp-child-theme-wpfactory-theme theme-storefront woocommerce-no-js wpf-full-width group-blog storefront-align-wide woocommerce-active aa-prefix-wpfac-"> 736<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 736-737
736 737 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
737GTM-K2S23LK
vendor: 85 bytes, lines 737-739
737" 738 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 739
739<!-- End Google Tag Manager (noscript) -->
740<script type="text/javascript" id="bbp-swap-no-js-body-class"> 741 document.body.className = document.body.className.replace( 'bbp-no-js', 'bbp-js' ); 742</script>
742 743 744 745<div class="wpft-full-width"></div> 746<div id="page" class="hfeed site"> 747 748<style> 749/* ============================================================ 750 HEADER â component-scoped styles 751 Assumes design tokens (--bg, --text, --grad, --line, etc.) 752 are already defined globally on :root. 753 ============================================================ */ 754 755/* Sticky bar */ 756.site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.85);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line);transition:background .25s} 757[data-theme="dark"] .site-header{background:rgba(10,14,26,.85)} 758.site-header .wrap{display:flex;align-items:center;gap:8px;height:64px} 759 760/* Brand */ 761.site-header .brand{display:flex;align-items:center;flex-shrink:0;color:var(--text)} 762.site-header .brand-logo{height:45px;width:auto;display:block;color:inherit} 763 764/* Primary nav */ 765.primary-nav{display:flex;align-items:center;gap:4px;margin-left:32px;flex:1} 766.primary-nav a, .primary-nav button.nav-trigger{display:inline-flex;align-items:center;gap:5px;padding:8px 14px;border-radius:var(--radius);font-size:14px;font-weight:600;color:var(--text-2);transition:color .15s,background .15s;background:transparent;border:0;cursor:pointer;font-family:inherit} 767.primary-nav a:hover, .primary-nav button.nav-trigger:hover{color:var(--text);background:var(--bg-2)} 768[data-theme="dark"] .primary-nav a:hover, [data-theme="dark"] .primary-nav button.nav-trigger:hover{background:var(--bg-3)} 769.primary-nav .caret{font-size:10px;opacity:.6;transition:transform .2s} 770.primary-nav .has-mega{position:relative} 771.primary-nav .has-mega.open .caret{transform:rotate(180deg)} 772 773/* Right-side CTA group */ 774.nav-cta-group{display:flex;align-items:center;gap:8px;flex-shrink:0} 775/* Shared icon button (sign-in, cart, theme toggle all use this) */ 776.icon-btn,.theme-toggle{width:36px;height:36px;padding:0;box-sizing:border-box;border-radius:50%;display:grid;place-items:center;color:var(--text-2,#5a6175);transition:background .15s,color .15s;background:transparent;border:0;cursor:pointer;position:relative} 777.icon-btn:hover,.theme-toggle:hover{background:var(--bg-2);color:var(--text)} 778[data-theme="dark"] .icon-btn,[data-theme="dark"] .theme-toggle{color:var(--text-2,#94a3b8)} 779[data-theme="dark"] .icon-btn:hover,[data-theme="dark"] .theme-toggle:hover{background:var(--bg-3)} 780.icon-btn svg,.theme-toggle svg{width:18px;height:18px} 781.theme-toggle .sun{display:none} 782.theme-toggle .moon{display:block} 783[data-theme="dark"] .theme-toggle .sun{display:block} 784[data-theme="dark"] .theme-toggle .moon{display:none} 785 786/* Cart count badge */ 787.cart-btn{position:relative} 788.cart-count{position:absolute;top:1px;right:1px;min-width:17px;height:17px;padding:0 4px;border-radius:99px;background:var(--coral,#FF6B6B);color:#FFF;font-family:var(--font-mono);font-size:10px;font-weight:800;line-height:17px;text-align:center;letter-spacing:-.02em;box-shadow:0 0 0 2px var(--bg);transition:transform .15s,box-shadow .15s} 789.cart-btn:hover .cart-count{transform:scale(1.08)} 790.cart-count.is-empty{display:none} 791 792/* Mega panel container */ 793.mega-panel{position:absolute;top:calc(100% + 10px);left:0;background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:24px;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .22s,transform .22s,visibility .22s;z-index:200;overflow:hidden} 794.has-mega.open > .mega-panel{opacity:1;visibility:visible;transform:translateY(0)} 795.mega-plugins{width:920px;max-width:calc(100vw - 48px)} 796.mega-resources{width:720px;max-width:calc(100vw - 48px)} 797.mega-panel::before{content:"";position:absolute;top:-30%;right:-10%;width:50%;height:140%;background:radial-gradient(circle,rgba(138,99,205,.06) 0%,transparent 60%);pointer-events:none;z-index:0} 798[data-theme="dark"] .mega-panel::before{background:radial-gradient(circle,rgba(168,138,224,.08) 0%,transparent 60%)} 799 800.mega-intro{position:relative;z-index:1;display:flex;align-items:baseline;gap:14px;margin-bottom:18px;padding:0 4px} 801.mega-intro .kicker-mini{font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--purple)} 802[data-theme="dark"] .mega-intro .kicker-mini{color:var(--purple-light)} 803.mega-intro h6{font-size:17px;font-weight:800;letter-spacing:-0.02em;color:var(--text);margin:0} 804 805.mega-row{position:relative;z-index:1;display:grid;gap:12px} 806.mega-resources .mega-row{grid-template-columns:repeat(3,1fr);gap:10px} 807.mega-resources .mega-row + .mega-row{margin-top:10px} 808
809/* Mega card */ 810.mega-card{position:relative;display:flex;flex-direction:column;gap:6px;padding:18px 16px 18px;border-radius:14px;background:var(--bg-card,#FFF);border:1px solid #E2E5EC;overflow:hidden;transition:transform .25s cubic-bezier(.2,.7,.3,1),border-color .2s,box-shadow .25s;cursor:pointer} 811.mega-card:hover{transform:translateY(-3px);border-color:#7C3AED;box-shadow:var(--shadow-sm,0 2px 8px rgba(0,0,0,.06))} 812[data-theme="dark"] .mega-card{border-color:#2A3142} 813.mc-icon-wrap{position:relative;width:40px;height:40px;margin-bottom:6px} 814.mc-icon-bg{position:absolute;inset:0;border-radius:11px;background:var(--grad-soft);transition:transform .3s cubic-bezier(.2,.7,.3,1),background .25s} 815.mega-card:hover .mc-icon-bg{transform:scale(1.06);background:var(--grad)} 816.mc-icon{position:absolute;inset:0;margin:auto;width:18px;height:18px;color:var(--purple);transition:color .25s,transform .35s cubic-bezier(.2,.7,.3,1)} 817[data-theme="dark"] .mc-icon{color:var(--purple-light)} 818.mega-card:hover .mc-icon{color:#FFF;transform:rotate(-6deg) scale(1.06)} 819.mc-icon-glow{position:absolute;inset:-6px;border-radius:14px;background:radial-gradient(circle,rgba(138,99,205,.35) 0%,transparent 60%);opacity:0;transform:scale(.6);transition:opacity .35s,transform .4s cubic-bezier(.2,.7,.3,1);pointer-events:none;z-index:-1} 820.mega-card:hover .mc-icon-glow{opacity:1;transform:scale(1.1)} 821.mc-name{font-size:14px;font-weight:800;letter-spacing:-0.015em;color:var(--text);line-height:1.25} 822.mc-arrow{align-self:flex-end;font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--text-3);transition:transform .25s,color .2s;margin-top:auto;padding-top:14px} 823.mega-card:hover .mc-arrow{color:var(--purple);transform:translateX(4px)} 824[data-theme="dark"] .mega-card:hover .mc-arrow{color:var(--purple-light)} 825.mega-resources .mega-card{padding:14px 14px} 826.mega-resources .mega-card .mc-name{font-size:13px} 827.mega-resources .mc-icon-wrap{width:34px;height:34px;margin-bottom:4px} 828.mega-resources .mc-icon{width:15px;height:15px} 829.mega-resources .mc-arrow{font-size:13px;padding-top:10px} 830.mega-card .mc-blurb{font-size:11px;color:var(--text-3);line-height:1.45;margin-top:2px;font-style:normal;text-align:center} 831 832/* Plugins mega split layout */ 833.mega-plugins-split{position:relative;z-index:1;display:grid;grid-template-columns:1.4fr 1fr;gap:14px} 834@media(max-width:880px){.mega-plugins-split{grid-template-columns:1fr;gap:12px}.mega-aa-promo{order:-1}} 835 836.mega-plugin-list{display:flex;flex-direction:column;gap:4px} 837.mega-plugin-row{position:relative;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:14px;padding:11px 14px 11px 12px;border-radius:11px;border:1px solid transparent;background:transparent;transition:transform .2s,background .2s,border-color .2s,box-shadow .25s} 838.mega-plugin-row:hover{transform:translateX(2px);background:var(--bg-card,#FFF);border-color:#7C3AED;box-shadow:var(--shadow-sm,0 2px 8px rgba(0,0,0,.06))} 839[data-theme="dark"] .mega-plugin-row:hover{background:var(--bg-card-2)} 840.mega-plugin-row .mc-icon-wrap{width:36px;height:36px;flex-shrink:0;margin-bottom:0} 841.mega-plugin-row .mc-icon{width:16px;height:16px} 842.mega-plugin-row .mpr-text{display:flex;flex-direction:column;gap:1px;min-width:0} 843.mega-plugin-row .mpr-name{font-size:13.5px;font-weight:800;color:var(--text);letter-spacing:-0.015em;line-height:1.2} 844.mega-plugin-row .mpr-desc{font-size:11px;color:var(--text-3);line-height:1.4;font-weight:500} 845.mega-plugin-row .mpr-meta{font-family:var(--font-mono);font-size:10.5px;font-weight:700;color:var(--purple);letter-spacing:.02em;background:var(--grad-soft);padding:3px 8px;border-radius:99px;flex-shrink:0;white-space:nowrap} 846[data-theme="dark"] .mega-plugin-row .mpr-meta{color:var(--purple-light)} 847.mega-plugin-row .mpr-arrow{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--text-3);transition:transform .2s,color .2s;flex-shrink:0} 848.mega-plugin-row:hover .mpr-arrow{color:var(--purple);transform:translateX(3px)} 849[data-theme="dark"] .mega-plugin-row:hover .mpr-arrow{color:var(--purple-light)} 850 851/* All Access promo card inside the Plugins mega */ 852.mega-aa-promo{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:10px;padding:24px 22px;border-radius:16px;background:var(--bg-card);border:1px solid var(--line);overflow:hidden;transition:transform .25s,border-color .2s,box-shadow .3s} 853[data-theme="dark"] .mega-aa-promo{background:var(--bg-card-2)}
854.mega-aa-promo:hover{transform:translateY(-2px);border-color:var(--purple);box-shadow:var(--shadow-md)} 855.mega-aa-promo::before{content:"";position:absolute;top:-40%;right:-30%;width:120%;height:120%;background:radial-gradient(circle,rgba(138,99,205,.18) 0%,rgba(56,71,211,.12) 35%,transparent 65%);pointer-events:none;animation:aaPromoFloat 8s ease-in-out infinite alternate} 856[data-theme="dark"] .mega-aa-promo::before{background:radial-gradient(circle,rgba(168,138,224,.22) 0%,rgba(89,105,229,.16) 35%,transparent 65%)} 857@keyframes aaPromoFloat{from{transform:translate(0,0) scale(1)}to{transform:translate(-12px,8px) scale(1.05)}} 858.mega-aa-promo::after{content:"";position:absolute;bottom:-30%;left:-20%;width:80%;height:80%;background:radial-gradient(circle,rgba(1,176,125,.10) 0%,transparent 50%);pointer-events:none;animation:aaPromoFloat2 10s ease-in-out infinite alternate} 859[data-theme="dark"] .mega-aa-promo::after{background:radial-gradient(circle,rgba(1,244,160,.10) 0%,transparent 50%)} 860@keyframes aaPromoFloat2{from{transform:translate(0,0)}to{transform:translate(8px,-6px)}} 861.maa-tag{position:relative;z-index:2;display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--purple);background:var(--bg-2);padding:5px 11px;border-radius:99px;align-self:flex-start;border:1px solid var(--line)} 862[data-theme="dark"] .maa-tag{color:var(--purple-light);background:var(--bg-3)} 863.maa-tag-dot{width:6px;height:6px;border-radius:50%;background:var(--aqua-deep);box-shadow:0 0 0 3px rgba(1,176,125,.18);animation:pulse 2s ease-in-out infinite} 864[data-theme="dark"] .maa-tag-dot{background:var(--aqua)} 865.mega-aa-promo h6{position:relative;z-index:2;font-size:18px;font-weight:800;letter-spacing:-0.025em;color:var(--text);margin:0;line-height:1.2} 866.mega-aa-promo h6 .grad-text{display:inline} 867.mega-aa-promo p{position:relative;z-index:2;font-size:12px;line-height:1.5;color:var(--text-3);margin:0} 868.maa-price{position:relative;z-index:2;display:flex;align-items:baseline;gap:6px;margin-top:6px} 869.maa-num{font-family:var(--font-mono);font-size:36px;font-weight:800;color:var(--text);letter-spacing:-0.04em;line-height:1;font-feature-settings:"tnum"} 870.maa-once{font-family:var(--font-mono);font-size:12px;color:var(--text-3);font-weight:600;letter-spacing:.02em} 871.maa-vs{position:relative;z-index:2;font-family:var(--font-mono);font-size:10.5px;color:var(--text-3);letter-spacing:.01em} 872.maa-vs s{color:var(--coral);text-decoration-thickness:1.5px;text-decoration-color:var(--coral);opacity:.85;font-weight:700} 873.maa-cta{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding:11px 16px;background:var(--grad-aa);color:var(--aa-ink);border-radius:10px;font-size:13px;font-weight:800;letter-spacing:-0.01em;box-shadow:var(--shadow-sm);transition:transform .2s,box-shadow .25s} 874.mega-aa-promo:hover .maa-cta{transform:translateY(-1px);box-shadow:var(--shadow-aa)} 875.maa-arr{transition:transform .2s} 876.mega-aa-promo:hover .maa-arr{transform:translateX(3px)} 877 878/* Bottom CTA bar inside mega */ 879.mega-cta-bar{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;padding:14px 18px;border-radius:12px;background:#F8F2E4;border:1px solid #ECE2C9;transition:transform .2s,border-color .2s,background .2s,box-shadow .25s} 880[data-theme="dark"] .mega-cta-bar{background:var(--bg-3);border-color:var(--line,#1E2330)} 881.mega-cta-bar:hover{transform:translateY(-1px);border-color:var(--purple);box-shadow:var(--shadow-sm)} 882.mcb-left{display:flex;align-items:center;gap:14px;min-width:0} 883.mcb-left > svg{flex-shrink:0;color:var(--purple);transition:transform .25s} 884[data-theme="dark"] .mcb-left > svg{color:var(--purple-light)} 885.mega-cta-bar:hover .mcb-left > svg{transform:rotate(-8deg) scale(1.08)} 886.mcb-text{display:flex;flex-direction:column;gap:1px;min-width:0} 887.mcb-text strong{font-size:14px;font-weight:800;color:var(--text);letter-spacing:-0.01em;line-height:1.2} 888.mcb-text em{font-style:normal;font-family:var(--font-mono);font-size:11px;color:var(--text-3);font-weight:500;letter-spacing:.02em} 889.mcb-arrow{font-family:var(--font-mono);font-size:18px;font-weight:700;color:var(--text-3);transition:transform .25s,color .2s;flex-shrink:0} 890.mega-cta-bar:hover .mcb-arrow{color:var(--purple);transform:translateX(4px)} 891[data-theme="dark"] .mega-cta-bar:hover .mcb-arrow{color:var(--purple-light)} 892 893@media(max-width:880px){.mega-resources .mega-row{grid-template-columns:repeat(2,1fr)}} 894@media(max-width:560px){.mega-resources .mega-row{grid-template-columns:1fr}.mega-cta-bar{flex-direction:row}} 895 896/* Burger + mobile drawer */ 897.burger{display:none;width:40px;height:40px;padding:0;box-sizing:border-box;border-radius:var(--radius);align-items:center;justify-content:center;background:transparent;border:0;cursor:pointer} 898.burger:hover{background:var(--bg-2)} 899.burger-line{width:18px;height:2px;background:var(--text);border-radius:2px;display:block;position:relative} 900.burger-line::before, .burger-line::after{content:"";position:absolute;width:100%;height:2px;background:var(--text);left:0;border-radius:2px} 901.burger-line::before{top:-6px} 902.burger-line::after{top:6px} 903 904@media(max-width:980px){ 905 .primary-nav{display:none} 906 .burger{display:inline-flex;flex-shrink:0} 907 /* Mobile header keeps only logo, search, cart, burger. The $499 pill, the 908 sign-in icon, and the theme toggle all live inside the burger drawer at 909 this breakpoint to keep the row uncluttered. */ 910 .header-cta, 911 .nav-cta-group .signin, 912 .nav-cta-group .theme-toggle{display:none} 913 /* Push the icon cluster to the right edge, opposite the logo. On desktop 914 the primary nav already does this via flex:1. */ 915 .nav-cta-group{margin-left:auto} 916} 917/* The $499 pill keeps .btn-primary for its sizing and mobile rules, but the 918 All Access mint overrides the purple fill. Two classes deep so it also wins 919 against the per-page stylesheets, which redeclare .btn-primary themselves. */ 920.nav-cta-group .header-cta{background:var(--grad-aa);color:var(--aa-ink);box-shadow:var(--shadow-aa)} 921.nav-cta-group .header-cta:hover{color:var(--aa-ink);box-shadow:var(--shadow-aa-hover)} 922.header-cta .cta-short{display:none} 923@media(max-width:520px){ 924 .nav-cta-group{gap:6px} 925 .icon-btn,.theme-toggle{width:34px;height:34px} 926} 927 928.mobile-drawer{position:fixed;top:0;right:0;
928width:min(100%,340px);height:100vh;background:var(--bg);box-shadow:var(--shadow-lg);z-index:9000;transform:translateX(100%);transition:transform .25s ease;overflow-y:auto;padding:72px 24px 24px} 929.mobile-drawer.open{transform:translateX(0)} 930.mobile-drawer ul{list-style:none;padding:0;margin:0} 931.mobile-drawer li{border-bottom:1px solid var(--line)} 932.mobile-drawer a{display:block;padding:14px 0;font-size:15px;font-weight:600;color:var(--text-2)} 933.mobile-drawer a:hover{color:var(--text)} 934.mobile-drawer .group-h{font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--purple);margin:24px 0 10px;padding-bottom:6px;border-bottom:1px dashed var(--line-2)} 935.mobile-drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:8000;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s} 936.mobile-drawer-overlay.open{opacity:1;visibility:visible} 937/* WordPress admin bar offset â push drawer + overlay below the bar so the close 938 button isn't covered when an admin is logged in. WP admin bar is 32px desktop, 939 46px on viewports below 783px. */ 940body.admin-bar .mobile-drawer{top:32px;height:calc(100vh - 32px)} 941body.admin-bar .mobile-drawer-overlay{top:32px} 942@media screen and (max-width:782px){ 943 body.admin-bar .mobile-drawer{top:46px;height:calc(100vh - 46px)} 944 body.admin-bar .mobile-drawer-overlay{top:46px} 945} 946/* Close button â padding:0 defeats Storefront's button reset (same fix as .burger), 947 svg width/height explicit so the X actually renders. */ 948.mobile-close{position:absolute;top:16px;right:16px;width:36px;height:36px;padding:0;box-sizing:border-box;border-radius:50%;display:grid;place-items:center;background:var(--bg-2);border:0;cursor:pointer;color:var(--text)} 949.mobile-close:hover{background:var(--bg-3)} 950.mobile-close svg{width:18px;height:18px;display:block} 951 952/* Drawer rows â icon + label, matches the desktop mega-menu icon treatment, sized down. */ 953.mobile-drawer li a{display:flex;align-items:center;gap:12px} 954.mobile-drawer .md-icon-wrap{flex-shrink:0;width:32px;height:32px;border-radius:8px;background:var(--grad-soft);display:grid;place-items:center;overflow:hidden;transition:background .2s,transform .2s} 955.mobile-drawer .md-icon{width:16px;height:16px;color:var(--purple);transition:color .2s} 956[data-theme="dark"] .mobile-drawer .md-icon{color:var(--purple-light)} 957.mobile-drawer li a:hover .md-icon-wrap{background:var(--grad);transform:scale(1.05)} 958.mobile-drawer li a:hover .md-icon{color:#FFF} 959/* Product-image variant â fills the wrap, soft gradient still sits behind for any 960 transparent edges in the product PNG. */ 961.mobile-drawer .md-icon-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s} 962.mobile-drawer li a:hover .md-icon-img{transform:scale(1.05)} 963 964/* Mega-menu plugin rows: product image variant. Sits on top of .mc-icon-bg so the 965 gradient shows through transparent edges. Inherits the wrap's border-radius. */ 966.mega-plugin-row .mc-icon-wrap{overflow:hidden} 967.mc-icon-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit;transition:transform .3s cubic-bezier(.2,.7,.3,1);z-index:1} 968.mega-plugin-row:hover .mc-icon-img{transform:scale(1.06)} 969 970/* Drawer theme-toggle row â sits at the bottom of the drawer, styled like a list row. */ 971.mobile-drawer .m-theme-row{border-bottom:1px solid var(--line)} 972.mobile-drawer .m-theme-btn{display:flex;width:100%;padding:14px 0;background:transparent;border:0;cursor:pointer;font:inherit;font-size:15px;font-weight:600;color:var(--text-2);justify-content:space-between;align-items:center;text-align:left} 973.mobile-drawer .m-theme-btn:hover{color:var(--text)} 974.mobile-drawer .m-theme-state{display:inline-flex;align-items:center;gap:8px;color:var(--text-3);font-size:13px;font-weight:500} 975.mobile-drawer .m-theme-state svg{width:16px;height:16px} 976.mobile-drawer .m-sun{display:none} 977.mobile-drawer .m-moon{display:block} 978[data-theme="dark"] .mobile-drawer .m-sun{display:block} 979[data-theme="dark"] .mobile-drawer .m-moon{display:none} 980.mobile-drawer .m-theme-text::after{content:"Light"} 981[data-theme="dark"] .mobile-drawer .m-theme-text::after{content:"Dark"} 982 983@keyframes pulse{50%{box-shadow:0 0 0 6px rgba(1,176,125,.05)}} 984 985/* Minimal header (cart + checkout): centered logo only, nothing else. */ 986.site-header.is-minimal .wrap{justify-content:center} 987.site-header.is-minimal .brand{margin:0 auto} 988 989/* Mini search â icon-btn that opens a small dropdown panel below. */ 990.search-wrap{position:relative} 991.search-panel{position:absolute;top:calc(100% + 10px);right:0;width:320px;max-width:calc(100vw - 32px);background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:14px;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .2s,transform .2s,visibility .2s;z-index:200} 992.search-wrap.open .search-panel{opacity:1;visibility:visible;transform:translateY(0)} 993.search-form{display:flex;align-items:center;gap:8px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;transition:border-color .15s,background .15s} 994.search-form:focus-within{border-color:var(--purple);background:var(--bg-card)} 995[data-theme="dark"] .search-form{background:var(--bg-3)} 996[data-theme="dark"] .search-form:focus-within{background:var(--bg-card-2,var(--bg-2))} 997.search-form svg{flex-shrink:0;color:var(--text-3)} 998.search-input{flex:1;border:0;background:transparent;outline:none;font:inherit;font-size:14px;color:var(--text);padding:4px 0;min-width:0} 999.search-input::placeholder{color:var(--text-3)} 1000.search-submit{flex-shrink:0;padding:6px 12px;border:0;border-radius:8px;background:var(--grad);color:#FFF;font-weight:700;font-size:12.5px;letter-spacing:-.01em;cursor:pointer;transition:transform .15s,box-shadow .2s} 1001.search-submit:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)} 1002.search-hint{display:block;margin-top:8px;padding:0 4px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;color:var(--text-3)} 1003@media(max-width:520px){.search-panel{position:fixed;top:64px;left:8px;right:8px;width:auto;max-width:none}} 1004</style> 1005 1006<header id="masthead" class="site-header" role="banner"> 1007 <div class="wrap"> 1008 <a class="brand" href="https://wpfactory.com/" aria-label="WPFactory home"> 1009 <svg class="brand-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 712 201" fill="none" role="img" aria-hidden="true"> 1010 <!-- Wordmark: uses currentColor so it inherits theme text color --> 1011 <path fill-rule="evenodd" clip-rule="evenodd" d="M648.803 92.7097C651.238 91.5676 653.604 90.5507 655.895 89.6578L654.698 76.3413C649.806 77.5478 644.837 79.9218 640.639 82.6324L639.474 77.2605H627.583V127.791H641.958V96.5327C644.137 95.0538 646.411 93.8312 648.803 92.7097ZM603.287 115.034C601.783 116.501 599.516 117.186 596.623 117.2C591.077 117.176 587.758 114.574 587.775 108.952V96.0961C587.757 90.4771 591.076 87.8768 596.623 87.8515C602.169 87.8756 605.49 90.4771 605.473 96.0961V108.952C605.482 111.518 604.779 113.576 603.287 115.034ZM582.421 125.87C585.77 127.775 590.484 128.789 596.623 128.852C604.93 128.77 614.226 126.727 617.884 118.437C619.241 115.358 619.901 112.057 619.851 108.534V96.5178C619.954 89.2798 617.432 82.9427 610.83 79.1829C607.477 77.2755 602.768 76.2609 596.624 76.2C588.319 76.2815 579.025 78.3257 575.363 86.614C574.005 89.6935 573.35 92.9959 573.401 96.5178V108.534C573.297 115.773 575.817 122.11 582.421 125.87ZM560.948 128.342C562.704 128.037 564.377 127.633 565.968 127.128L564.313 116.721C562.379 117.26 560.312 117.522 558.304 117.504C555.9
101165 117.535 554.478 116.452 554.447 114.046V88.3812H565.645L566.431 77.2605H554.447V62.7984L540.069 64.7576V76.6676V88.9741V116.164C540.138 125.861 546.311 128.929 555.374 128.851C557.157 128.846 559.018 128.674 560.948 128.342ZM511.325 108.631V96.4189C511.243 90.2944 514.527 88.0468 520.49 88.0641C523.931 88.079 527.458 88.5111 530.82 89.2166L532.588 77.6581C528.613 76.8055 524.566 76.185 520.49 76.1988C505.547 76.1161 496.812 80.9399 496.949 96.6235V108.426C496.812 124.11 505.549 128.934 520.49 128.85C524.569 128.866 528.617 128.242 532.588 127.391L530.82 115.837C527.407 116.579 523.99 116.984 520.49 116.984C514.527 117.004 511.243 114.756 511.325 108.631ZM474.201 109.201V116.12C471.3 117.469 468.919 118.137 465.679 118.155C462.42 118.179 460.813 116.763 460.84 113.518C460.801 110.017 462.914 109.153 466.116 109.2L474.201 109.201ZM476.849 127.791H488.576V95.3538C488.79 79.4897 482.344 76.1437 466.871 76.1988C460.811 76.2241 454.445 76.948 448.606 78.5728L450.46 88.9155C455.011 88.0652 459.625 87.5355 464.261 87.5321C470.553 87.4746 474.557 88.2295 474.199 95.2641V99.7788H462.2C452.082 99.6949 447.067 103.489 447.113 113.725C447.044 122.312 450.81 128.647 460.264 128.851C465.66 128.924 471.038 126.69 475.678 124.232L476.849 127.791ZM441.327 66.1847L443.092 55.3548C439.363 54.5941 435.682 54.0138 431.864 54C420.689 54.046 414.488 58.5894 414.604 69.964V78.3234H406.587V89.6555H414.604V127.79H428.98V89.6567H440.407L441.387 78.3246H428.98V71.6841C428.754 67.3269 430.312 65.5791 434.895 65.5447C437.037 65.555 439.221 65.8124 441.327 66.1847ZM368.854 115.375V92.6477C371.707 90.2255 375.618 88.3755 379.432 88.2744C383.726 88.3111 385.736 90.6035 385.686 94.7172V110.332C385.736 114.36 383.639 116.71 379.439 116.772C375.881 116.746 372.314 116.194 368.854 115.375ZM400.062 110.339V94.7252C400.018 84.1377 395.852 76.2126 384.002 76.1977C378.238 76.3356 372.222 78.6348 367.435 81.704L365.691 77.2605H354.48V146L368.856 144.039V127.208C373.45 128.279 378.191 128.831 382.91 128.851C395.241 128.785 400.119 121.841 400.062 110.339ZM310.467 92.5282L321.215 127.791H337.156L346.05 77.2605H332.983L328.081 107.027L326.902 107.1L317.925 77.2605H303.231L294.151 107.102L292.969 107.028L288.068 77.2617H275L283.893 127.792H299.835L310.467 92.5282ZM676.489 145.974H689.972L695.667 128.206L712 77.2605H697.462L686.28 115.456L675.098 77.2605H660.556L676.435 127.791H681.779L676.489 145.974Z" fill="currentColor"/> 1012 <!-- Factory icon: keeps its original gradients in both light and dark mode --> 1013 <path d="M0 170.022C0 161.978 12.8917 154.648 34.0285 149.141V157.118C34.0285 167.415 42.0076 168.904 49.8416 171.375C90.9929 184.358 164.802 183.326 216.044 171.375C220.842 170.256 226.466 169.111 226.466 162.307V149.142C247.601 154.648 260.49 161.979 260.49 170.024C260.49 187.132 202.179 200.999 130.247 200.999C58.3131 200.997 0 187.13 0 170.022Z" fill="url(#wpf_lg0)"/> 1014 <path fill-rule="evenodd" clip-rule="evenodd" d="M139.5 80.5L138 80L99.8411 59.7194C96.9579 58.1965 87.2534 57.5184 87.2534 67.7932V81.3454L50.1356 61.7538C45.2229 59.381 34.0234 61.0757 34.0234 72.0311V149.142C57.8424 142.937 92.1292 139.043 130.242 139.043C130.67 139.043 131.095 139.048 131.522 139.048L138.888 81.9968L139.5 80.5Z" fill="#8A63CD"/> 1015 <path d="M218.488 122.568L187.636 105.805L187.546 106.065L187.636 106.909L191.359 142.662C204.583 144.336 216.452 146.533 226.468 149.143V135.167C226.468 126.196 219.313 123.005 218.488 122.568Z" fill="url(#wpf_lg1)"/> 1016 <path d="M187.637 106.908L188 106L176.495 3.65522C176.319 1.79771 174.524 0 172.848 0H151.766C150.191 0 148.364 1.75573 148.137 3.49491L138 80L137.5 82L187.662 107.146L187.637 106.908Z" fill="url(#wpf_lg2)"/> 1017 <path fill-rule="evenodd" clip-rule="evenodd" d="M191.357 142.649L194.779 175.5C202.171 174.314 209.303 172.933 216.043 171.36C220.841 170.242 226.465 169.099 226.465 162.293V149.13C216.45 146.52 204.581 144.321 191.357 142.649Z" fill="url(#wpf_lg3)"/> 1018 <path d="M131.5 139C131.072 138.998 130.428 139 130 139C91.8871 139 57.8424 142.943 34.0234 149.145V157.124C34.0234 167.421 42.0025 168.91 49.8366 171.381C69.72 177.653 97.0941 180.921 126 181" fill="url(#wpf_lg4)"/> 1019 <path fill-rule="evenodd" clip-rule="evenodd" d="M188 106L140 81L138 80L125.5 181C148.51 181.109 173.103 179.064 194.791 175.648L188 106Z" fill="url(#wpf_lg5)"/> 1020 <defs> 1021 <linearGradient id="wpf_lg0" x1="-0.000254476" y1="175.069" x2="260.491" y2="175.069" gradientUnits="userSpaceOnUse"><stop stop-color="#48DBD7"/><stop offset="1" stop-color="#01F4A0"/></linearGradient> 1022 <linearGradient id="wpf_lg1" x1="135.313" y1="127.603" x2="227.846" y2="127.603" gradientUnits="userSpaceOnUse"><stop stop-color="#8C63CF"/><stop offset="1" stop-color="#3847D3"/></linearGradient> 1023 <linearGradient id="wpf_lg2" x1="133.268" y1="53.573" x2="216.772" y2="53.573" gradientUnits="userSpaceOnUse"><stop offset="0.0456" stop-color="#8C63CF"/><stop offset="1" stop-color="#3847D3"/></linearGradient> 1024 <linearGradient id="wpf_lg3" x1="191.358" y1="159.074" x2="226.466" y2="
1024159.074" gradientUnits="userSpaceOnUse"><stop stop-color="#059AE5"/><stop offset="1" stop-color="#01ACE7"/></linearGradient> 1025 <linearGradient id="wpf_lg4" x1="34.0234" y1="159.89" x2="131.522" y2="159.89" gradientUnits="userSpaceOnUse"><stop stop-color="#1C37D1"/><stop offset="1" stop-color="#0E70DD"/></linearGradient> 1026 <linearGradient id="wpf_lg5" x1="101.259" y1="122.802" x2="179.283" y2="143.417" gradientUnits="userSpaceOnUse"><stop stop-color="#2B42C9"/><stop offset="0.1908" stop-color="#2947CA"/><stop offset="0.4141" stop-color="#2255CE"/><stop offset="0.6537" stop-color="#176DD5"/><stop offset="0.9031" stop-color="#078DDE"/><stop offset="1" stop-color="#009CE2"/></linearGradient> 1027 </defs> 1028 </svg> 1029 </a> 1030 1031 <nav class="primary-nav" aria-label="Primary"> 1032 1033 <!-- ============ PLUGINS MEGA ============ --> 1034 <div class="has-mega" data-mega="plugins"> 1035 <button class="nav-trigger" type="button" aria-expanded="false" aria-haspopup="true">Plugins <span class="caret">â¾</span></button> 1036 <div class="mega-panel mega-plugins" role="menu"> 1037 1038 <div class="mega-intro"> 1039 <span class="kicker-mini">most popular</span> 1040 <h6>The plugins most stores reach for first.</h6> 1041 </div> 1042 1043 <div class="mega-plugins-split"> 1044 1045 <!-- Left: top plugins as a vertical list --> 1046 <div class="mega-plugin-list"> 1047 <a class="mega-plugin-row" href="https://wpfactory.com/item/product-quantity-for-woocommerce/"> 1048 <div class="mc-icon-wrap" aria-hidden="true"> 1049 <span class="mc-icon-bg"></span> 1050 <img class="mc-icon-img" src="https://wpfactory.com/wp-content/uploads/wpf-Min-Max-Default-Quantity-Manager-for-WooCommerce-Icon.png" alt="" loading="lazy"> 1051 </div> 1052 <div class="mpr-text"> 1053 <span class="mpr-name">WooCommerce Quantity Manager</span> 1054 <span class="mpr-desc">Min, max, and step rules</span> 1055 </div> 1056 <span class="mpr-meta">10k stores</span> 1057 <span class="mpr-arrow" aria-hidden="true">â</span> 1058 </a> 1059 1060 <a class="mega-plugin-row" href="https://wpfactory.com/item/cost-of-goods-for-woocommerce/"> 1061 <div class="mc-icon-wrap" aria-hidden="true"> 1062 <span class="mc-icon-bg"></span> 1063 <img class="mc-icon-img" src="https://wpfactory.com/wp-content/uploads/wpf-Cost-of-Goods-for-Woocommerce-Icon.png" alt="" loading="lazy"> 1064 </div> 1065 <div class="mpr-text"> 1066 <span class="mpr-name">Cost of Goods</span> 1067 <span class="mpr-desc">Track real profit per SKU, per variation</span> 1068 </div> 1069 <span class="mpr-meta">15k stores</span> 1070 <span class="mpr-arrow" aria-hidden="true">â</span> 1071 </a> 1072 1073 <a class="mega-plugin-row" href="https://wpfactory.com/item/eu-vat-for-woocommerce/"> 1074 <div class="mc-icon-wrap" aria-hidden="true"> 1075 <span class="mc-icon-bg"></span> 1076 <img class="mc-icon-img" src="https://wpfactory.com/wp-content/uploads/wpf-eu-uk-vat-manager-for-woocommerce-Icon.png" alt="" loading="lazy"> 1077 </div> 1078 <div class="mpr-text"> 1079 <span class="mpr-name">EU/UK VAT Compliance</span> 1080 <span class="mpr-desc">VIES validation, OSS rates, B2B exemptions</span> 1081 </div> 1082 <span class="mpr-meta">11k stores</span> 1083 <span class="mpr-arrow" aria-hidden="true">â</span> 1084 </a> 1085 1086 <a class="mega-plugin-row" href="https://wpfactory.com/item/order-minimum-maximum-amount-for-woocommerce/"> 1087 <div class="mc-icon-wrap" aria-hidden="true">
1088 <span class="mc-icon-bg"></span> 1089 <img class="mc-icon-img" src="https://wpfactory.com/wp-content/uploads/wpf-Order-Minimum-Maximum-Amount-for-WooCommerce-Icon.png" alt="" loading="lazy"> 1090 </div> 1091 <div class="mpr-text"> 1092 <span class="mpr-name">Order Min/Max Amount</span> 1093 <span class="mpr-desc">Cart totals within your limits</span> 1094 </div> 1095 <span class="mpr-meta">4k stores</span> 1096 <span class="mpr-arrow" aria-hidden="true">â</span> 1097 </a> 1098 1099 <a class="mega-plugin-row" href="https://wpfactory.com/item/product-price-by-quantity-for-woocommerce/"> 1100 <div class="mc-icon-wrap" aria-hidden="true"> 1101 <span class="mc-icon-bg"></span> 1102 <img class="mc-icon-img" src="https://wpfactory.com/wp-content/uploads/wpf-dynamic-pricing-bulk-quantity-discounts-for-woocommerce-Icon.png" alt="" loading="lazy"> 1103 </div> 1104 <div class="mpr-text"> 1105 <span class="mpr-name">Dynamic Pricing & Discounts</span> 1106 <span class="mpr-desc">Tiered pricing, role-based, scheduled</span> 1107 </div> 1108 <span class="mpr-meta">8.4k stores</span> 1109 <span class="mpr-arrow" aria-hidden="true">â</span> 1110 </a> 1111 1112 </div> 1113 1114 <!-- Right: Featured All Access promo card --> 1115 <a class="mega-aa-promo" href="https://wpfactory.com/all-access-lifetime-deal/"> 1116 <span class="maa-tag"> 1117 <span class="maa-tag-dot" aria-hidden="true"></span> 1118 Best value 1119 </span> 1120 <h6>Take all <span class="grad-text">50+ plugins.</span><br>Pay once.</h6> 1121 <p>Lifetime updates, unlimited sites, every plugin we ever ship.</p> 1122 1123 <div class="maa-price"> 1124 <span class="maa-num">$499</span> 1125 <span class="maa-once">once</span> 1126 </div> 1127 <div class="maa-vs"><s>$1,990</s> if bought separately</div> 1128 1129 <div class="maa-cta"> 1130 Get All Access <span class="maa-arr" aria-hidden="true">â</span> 1131 </div> 1132 </a> 1133 1134 </div> 1135 1136 <!-- "Show all 50+ plugins" â link to wpfactory.com/items/ as requested --> 1137 <a class="mega-cta-bar" href="https://wpfactory.com/items/"> 1138 <div class="mcb-left"> 1139 <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg> 1140 <span class="mcb-text"> 1141 <strong>Show all 50+ plugins</strong> 1142 <em>180k+ stores · 4.8â across 720 reviews</em> 1143 </span> 1144 </div> 1145 <span class="mcb-arrow" aria-hidden="true">â</span> 1146 </a> 1147 </div> 1148 </div> 1149 1150 <!-- ============ RESOURCES MEGA ============ --> 1151 <div class="has-mega" data-mega="resources"> 1152 <button class="nav-trigger" type="button" aria-expanded="false" aria-haspopup="true">Resources <span class="caret">â¾</span></button> 1153 <div class="mega-panel mega-resources" role="menu"> 1154 1155 <div class="mega-intro"> 1156 <span class="kicker-mini">learn & explore</span> 1157 <h6>Everything you need to get the most out of WPFactory.</h6> 1158 </div> 1159 1160 <div class="mega-row"> 1161 <a class="mega-card" href="https://wpfactory.com/blog/"> 1162 <div class="mc-icon-wrap" aria-hidden="true"> 1163 <span class="mc-icon-bg"></span> 1164 <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>
1165 <span class="mc-icon-glow"></span> 1166 </div> 1167 <span class="mc-name">Blog</span> 1168 <span class="mc-blurb">WooCommerce guides & news</span> 1169 <span class="mc-arrow" aria-hidden="true">â</span> 1170 </a> 1171 1172 <a class="mega-card" href="https://wpfactory.com/docs/"> 1173 <div class="mc-icon-wrap" aria-hidden="true"> 1174 <span class="mc-icon-bg"></span> 1175 <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg> 1176 <span class="mc-icon-glow"></span> 1177 </div> 1178 <span class="mc-name">Documentation</span> 1179 <span class="mc-blurb">Setup & configuration</span> 1180 <span class="mc-arrow" aria-hidden="true">â</span> 1181 </a> 1182 1183 <a class="mega-card" href="https://wpfactory.com/glossary/"> 1184 <div class="mc-icon-wrap" aria-hidden="true"> 1185 <span class="mc-icon-bg"></span> 1186 <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 7 4 4 20 4 20 7"/><line x1="9" y1="20" x2="15" y2="20"/><line x1="12" y1="4" x2="12" y2="20"/></svg> 1187 <span class="mc-icon-glow"></span> 1188 </div> 1189 <span class="mc-name">Glossary</span> 1190 <span class="mc-blurb">Plain-language WooCommerce terms</span> 1191 <span class="mc-arrow" aria-hidden="true">â</span> 1192 </a> 1193 </div> 1194 1195 <div class="mega-row"> 1196 <a class="mega-card" href="https://wpfactory.com/tools/"> 1197 <div class="mc-icon-wrap" aria-hidden="true"> 1198 <span class="mc-icon-bg"></span> 1199 <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg> 1200 <span class="mc-icon-glow"></span> 1201 </div> 1202 <span class="mc-name">Free Tools</span> 1203 <span class="mc-blurb">Calculators & generators</span> 1204 <span class="mc-arrow" aria-hidden="true">â</span> 1205 </a> 1206 1207 <a class="mega-card" href="https://wpfactory.com/blog/category/wpfactory-ebooks/"> 1208 <div class="mc-icon-wrap" aria-hidden="true"> 1209 <span class="mc-icon-bg"></span> 1210 <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg> 1211 <span class="mc-icon-glow"></span> 1212 </div> 1213 <span class="mc-name">Free eBooks</span> 1214 <span class="mc-blurb">Margin, pricing, UX guides</span> 1215 <span class="mc-arrow" aria-hidden="true">â</span> 1216 </a> 1217 1218 <a class="mega-card" href="https://wpfactory.com/blog/category/case-study/"> 1219 <div class="mc-icon-wrap" aria-hidden="true"> 1220 <span class="mc-icon-bg"></span> 1221 <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"/></svg> 1222 <span class="mc-icon-glow"></span> 1223 </div> 1224 <span class="mc-name">Case Studies</span> 1225 <span class="mc-blurb">Real stores, real numbers</span>
1226 <span class="mc-arrow" aria-hidden="true">â</span> 1227 </a> 1228 </div> 1229 1230 <a class="mega-cta-bar" href="https://wpfactory.com/contact-us/"> 1231 <div class="mcb-left"> 1232 <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22 6 12 13 2 6"/></svg> 1233 <span class="mcb-text"> 1234 <strong>Need help? Email support</strong> 1235 <em>real engineers</em> 1236 </span> 1237 </div> 1238 <span class="mcb-arrow" aria-hidden="true">â</span> 1239 </a> 1240 </div> 1241 </div> 1242 </nav> 1243 1244 <div class="nav-cta-group"> 1245 1246 <!-- Mini search --> 1247 <div class="search-wrap" id="wpf-search"> 1248 <button class="icon-btn search-btn" type="button" aria-label="Search" aria-expanded="false" aria-controls="wpf-search-panel"> 1249 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><line x1="20" y1="20" x2="16.65" y2="16.65"/></svg> 1250 </button> 1251 <div class="search-panel" id="wpf-search-panel" role="search"> 1252 <form class="search-form" role="search" method="get" action="https://wpfactory.com/"> 1253 <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><line x1="20" y1="20" x2="16.65" y2="16.65"/></svg> 1254 <input class="search-input" type="search" name="s" placeholder="Search plugins, docs, blogâ¦" aria-label="Search the site" autocomplete="off"> 1255 <button class="search-submit" type="submit">Go</button> 1256 </form> 1257 <span class="search-hint">Press Enter to search · Esc to close</span> 1258 </div> 1259 </div> 1260 1261 <!-- Sign in / My account --> 1262 <a class="icon-btn signin" href="https://wpfactory.com/my-account/" aria-label="My account"> 1263 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> 1264 </a> 1265 1266 <!-- Cart --> 1267 <a class="icon-btn cart-btn" href="https://wpfactory.com/cart/" aria-label="Cart"> 1268 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/></svg> 1269 <span class="cart-count is-empty">0</span> 1270 </a> 1271 1272 <button class="theme-toggle" type="button" aria-label="Toggle theme"> 1273 <svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg> 1274 <svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg> 1275 </button> 1276 1277 <a class="btn btn-primary btn-sm header-cta" href="https://wpfactory.com/all-access-lifetime-deal/"> 1278 <span class="cta-long">Get All Access - $499</span> 1279 <span class="cta-short">$499</span> 1280 <span class="arrow" aria-hidden="true">â</span> 1281 </a> 1282 <button class="burger" type="button" aria-label="Open menu" aria-expanded="false"><span class="burger-line" aria-hidden="true"></span></button> 1283 </div> 1284 </div> 1285</header> 1286 1287<!-- Mobile drawer (lives outside <header> so it overlays the page) --> 1288<div class="mobile-drawer-overlay" id="m-overlay"></div> 1289<div class="mobile-drawer" id="m-drawer" aria-label="Mobile navigation"> 1290 <button class="mobile-close" aria-label="Close menu" id="m-close"> 1291 <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 1292 </button> 1293 <ul> 1294 <li class="group-h">Plugins</li> 1295 <li> 1296 <a href="https://wpfactory.com/items/">
1297 <span class="md-icon-wrap" aria-hidden="true"> 1298 <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg> 1299 </span> 1300 <span>All Items</span> 1301 </a> 1302 </li> 1303 <li class="group-h">Resources</li> 1304 <li> 1305 <a href="https://wpfactory.com/blog/"> 1306 <span class="md-icon-wrap" aria-hidden="true"> 1307 <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg> 1308 </span> 1309 <span>Blog</span> 1310 </a> 1311 </li> 1312 <li> 1313 <a href="https://wpfactory.com/docs/"> 1314 <span class="md-icon-wrap" aria-hidden="true"> 1315 <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg> 1316 </span> 1317 <span>Documentation</span> 1318 </a> 1319 </li> 1320 <li> 1321 <a href="https://wpfactory.com/support/"> 1322 <span class="md-icon-wrap" aria-hidden="true"> 1323 <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="4"/><line x1="4.93" y1="4.93" x2="9.17" y2="9.17"/><line x1="14.83" y1="14.83" x2="19.07" y2="19.07"/><line x1="14.83" y1="9.17" x2="19.07" y2="4.93"/><line x1="4.93" y1="19.07" x2="9.17" y2="14.83"/></svg> 1324 </span> 1325 <span>Support</span> 1326 </a> 1327 </li> 1328 <li class="group-h">Account</li> 1329 <li> 1330 <a href="https://wpfactory.com/my-account/"> 1331 <span class="md-icon-wrap" aria-hidden="true"> 1332 <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> 1333 </span> 1334 <span>Sign in / My Account</span> 1335 </a> 1336 </li> 1337 <li> 1338 <a href="https://wpfactory.com/cart/"> 1339 <span class="md-icon-wrap" aria-hidden="true"> 1340 <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/></svg> 1341 </span> 1342 <span>Cart</span> 1343 </a> 1344 </li> 1345 <li class="group-h">Appearance</li> 1346 <li class="m-theme-row"> 1347 <button class="m-theme-btn" type="button" aria-label="Toggle theme"> 1348 <span>Theme</span> 1349 <span class="m-theme-state"> 1350 <svg class="m-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg> 1351 <svg class="m-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg> 1352 <span class="m-theme-text"></span> 1353 </span> 1354 </button> 1355 </li> 1356 </ul> 1357</div> 1358
1359<script> 1360(function(){ 1361 // ===== Theme toggle ===== 1362 // Controls light/dark on the <html> element. As long as each page defines 1363 // the design tokens for both themes on :root[data-theme="light"] and 1364 // :root[data-theme="dark"], one toggle here handles every page. 1365 // Binds to both the header icon (.theme-toggle) and the drawer row (.m-theme-btn). 1366 var themeBtns = document.querySelectorAll('.theme-toggle, .m-theme-btn'); 1367 themeBtns.forEach(function(btn){ 1368 btn.addEventListener('click', function(){ 1369 var current = document.documentElement.getAttribute('data-theme'); 1370 var next = current === 'dark' ? 'light' : 'dark'; 1371 document.documentElement.setAttribute('data-theme', next); 1372 try{ localStorage.setItem('wpf-theme', next); }catch(e){} 1373 }); 1374 }); 1375 1376 // ===== Mega-menu: hover + click + edge-aware positioning ===== 1377 function positionMegaPanel(megaItem){ 1378 var panel = megaItem.querySelector('.mega-panel'); 1379 if(!panel) return; 1380 panel.style.left = '0'; 1381 panel.style.right = 'auto'; 1382 var rect = panel.getBoundingClientRect(); 1383 var vw = window.innerWidth; 1384 var safeMargin = 24; 1385 if(rect.right > vw - safeMargin){ 1386 var overflow = rect.right - (vw - safeMargin); 1387 panel.style.left = (-overflow) + 'px'; 1388 } 1389 rect = panel.getBoundingClientRect(); 1390 if(rect.left < safeMargin){ 1391 var fix = safeMargin - rect.left; 1392 panel.style.left = (parseFloat(panel.style.left || 0) + fix) + 'px'; 1393 } 1394 } 1395 1396 var megaItems = document.querySelectorAll('.has-mega'); 1397 var openMega = null; 1398 megaItems.forEach(function(el){ 1399 var trigger = el.querySelector('.nav-trigger'); 1400 el.addEventListener('mouseenter', function(){ 1401 megaItems.forEach(function(m){ m.classList.remove('open'); }); 1402 el.classList.add('open'); 1403 requestAnimationFrame(function(){ positionMegaPanel(el); }); 1404 openMega = el; 1405 if(trigger) trigger.setAttribute('aria-expanded','true'); 1406 }); 1407 el.addEventListener('mouseleave', function(){ 1408 el.classList.remove('open'); 1409 if(trigger) trigger.setAttribute('aria-expanded','false'); 1410 if(openMega === el) openMega = null; 1411 }); 1412 if(trigger){ 1413 trigger.addEventListener('click', function(e){ 1414 e.preventDefault(); 1415 var isOpen = el.classList.contains('open'); 1416 megaItems.forEach(function(m){ m.classList.remove('open'); }); 1417 if(!isOpen){ 1418 el.classList.add('open'); 1419 requestAnimationFrame(function(){ positionMegaPanel(el); }); 1420 openMega = el; 1421 } 1422 trigger.setAttribute('aria-expanded', !isOpen ? 'true' : 'false'); 1423 }); 1424 } 1425 }); 1426 document.addEventListener('click', function(e){ 1427 if(openMega && !openMega.contains(e.target)){ 1428 openMega.classList.remove('open'); 1429 var t = openMega.querySelector('.nav-trigger'); 1430 if(t) t.setAttribute('aria-expanded','false'); 1431 openMega = null; 1432 } 1433 }); 1434 window.addEventListener('resize', function(){ 1435 if(openMega) positionMegaPanel(openMega); 1436 }); 1437 1438 // ===== Mini search ===== 1439 var searchWrap = document.getElementById('wpf-search'); 1440 if(searchWrap){ 1441 var searchBtn = searchWrap.querySelector('.search-btn'); 1442 var searchInput = searchWrap.querySelector('.search-input'); 1443 function openSearch(){ 1444 searchWrap.classList.add('open'); 1445 if(searchBtn) searchBtn.setAttribute('aria-expanded','true'); 1446 // Defer focus until after the transition starts so iOS doesn't jump. 1447 setTimeout(function(){ if(searchInput) searchInput.focus(); }, 50); 1448 } 1449 function closeSearch(){ 1450 searchWrap.classList.remove('open'); 1451 if(searchBtn) searchBtn.setAttribute('aria-expanded','false'); 1452 } 1453 if(searchBtn){ 1454 searchBtn.addEventListener('click', function(e){ 1455 e.stopPropagation(); 1456 if(searchWrap.classList.contains('open')) closeSearch(); else openSearch(); 1457 }); 1458 } 1459 document.addEventListener('click', function(e){ 1460 if(searchWrap.classList.contains('open') && !searchWrap.contains(e.target)) closeSearch(); 1461 }); 1462 document.addEventListener('keydown', function(e){
1463 if(e.key === 'Escape' && searchWrap.classList.contains('open')) closeSearch(); 1464 }); 1465 } 1466 1467 // ===== Mobile drawer ===== 1468 var burger = document.querySelector('.burger'); 1469 var drawer = document.getElementById('m-drawer'); 1470 var overlay = document.getElementById('m-overlay'); 1471 var mclose = document.getElementById('m-close'); 1472 function openDrawer(){ 1473 if(drawer) drawer.classList.add('open'); 1474 if(overlay) overlay.classList.add('open'); 1475 if(burger) burger.setAttribute('aria-expanded','true'); 1476 document.body.style.overflow = 'hidden'; 1477 } 1478 function closeDrawer(){ 1479 if(drawer) drawer.classList.remove('open'); 1480 if(overlay) overlay.classList.remove('open'); 1481 if(burger) burger.setAttribute('aria-expanded','false'); 1482 document.body.style.overflow = ''; 1483 } 1484 if(burger) burger.addEventListener('click', openDrawer); 1485 if(mclose) mclose.addEventListener('click', closeDrawer); 1486 if(overlay) overlay.addEventListener('click', closeDrawer); 1487})(); 1488</script>
1488 1489 1490 1491<div id="content" class="site-content" tabindex="-1"> 1492<div class="col-full"><div class="woocommerce"></div> 1493<main id="main"> 1494 1495 1496<!-- ============================================================ 1497 HERO 1498 ============================================================ --> 1499<section class="bl-hero"> 1500 <div class="blob blob-1" aria-hidden="true"></div> 1501 <div class="blob blob-2" aria-hidden="true"></div> 1502 <div class="wrap"> 1503 <span class="bl-hero-eyebrow eyebrow">guides, case studies, and how-tos ↓</span> 1504 <h1>The WPFactory <span class="grad-text">blog.</span></h1> 1505 <p class="bl-hero-lede"> 1506 WooCommerce guides, real store case studies, code snippets, and how-tos from the team. 1507 </p> 1508 </div> 1509</section> 1510 1511 1512<!-- ============================================================ 1513 FILTER PILLS 1514 ============================================================ --> 1515<div class="bl-filter-wrap"> 1516 <div class="bl-filter" role="tablist" aria-label="Filter posts by category"> 1517 1518 <a class="bl-filter-btn active" href="https://wpfactory.com/blog/"> 1519 All <span class="count">340</span> 1520 </a> 1521 1522 <a class="bl-filter-btn" href="https://wpfactory.com/blog/category/woo-guides/"> 1523 WooCommerce Guides <span class="count">129</span> 1524 </a> 1525 <a class="bl-filter-btn" href="https://wpfactory.com/blog/category/reviews/"> 1526 Plugins Reviews <span class="count">67</span> 1527 </a> 1528 <a class="bl-filter-btn" href="https://wpfactory.com/blog/category/selling-tips/"> 1529 Selling Tips <span class="count">47</span> 1530 </a> 1531 <a class="bl-filter-btn" href="https://wpfactory.com/blog/category/how-to/"> 1532 How To <span class="count">45</span> 1533 </a> 1534 <a class="bl-filter-btn" href="https://wpfactory.com/blog/category/building-wordpress/"> 1535 Building WordPress <span class="count">20</span> 1536 </a> 1537 <a class="bl-filter-btn" href="https://wpfactory.com/blog/category/wpfactory-ebooks/"> 1538 WPFactory eBooks <span class="count">13</span> 1539 </a> 1540 <a class="bl-filter-btn" href="https://wpfactory.com/blog/category/case-study/"> 1541 Case Study <span class="count">8</span> 1542 </a> 1543 <a class="bl-filter-btn" href="https://wpfactory.com/blog/category/snippets/"> 1544 Coding Snippets <span class="count">6</span> 1545 </a> 1546 <a class="bl-filter-btn" href="https://wpfactory.com/blog/category/wpfactory-updates/">
1547 WPFactory Updates <span class="count">5</span> 1548 </a> 1549 1550 </div> 1551</div> 1552 1553 1554 <div class="bl-feat-wrap"> 1555 <div class="wrap"> 1556 <a class="bl-feat" href="https://wpfactory.com/blog/woocommerce-cost-of-goods/"> 1557 1558 <div class="bl-feat-img"> 1559 <span class="bl-feat-tag"><span class="dot" aria-hidden="true"></span>Latest</span> 1560 <img width="1229" height="461" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide.webp" class="attachment-wpf_blog_featured size-wpf_blog_featured wp-post-image" alt="WooCommerce Cost of Goods: The Complete Profit Tracking Guide" loading="eager" decoding="async" fetchpriority="high" srcset="https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide.webp 1229w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-300x113.webp 300w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-768x288.webp 768w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-360x135.webp 360w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-250x94.webp 250w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-299x112.webp 299w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-490x184.webp 490w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-160x60.webp 160w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-227x85.webp 227w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-416x156.webp 416w" sizes="(max-width: 1229px) 100vw, 1229px" /> </div> 1561 1562 <div class="bl-feat-body"> 1563 <div class="bl-feat-meta"> 1564 <span class="cat">WooCommerce Guides</span> 1565 <span class="sep" aria-hidden="true">·</span> 1566 <span>September 28, 2026</span> 1567 <span class="sep" aria-hidden="true">·</span> 1568 <span>11 min read</span> 1569 </div> 1570 1571 <h2>WooCommerce Cost of Goods: The Complete Profit Tracking Guide</h2> 1572 1573 <p>Quick Answer: WooCommerce Cost of Goods Cost of goods in WooCommerce is what each product actually costs you to sell, so you can subtract it from revenue and see real profit rather than just sales.…</p> 1574 1575 <div class="bl-feat-foot"> 1576 <div class="bl-feat-author"> 1577 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=84&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=168&d=mm&r=g 2x' class='avatar avatar-84 photo' height='84' width='84' decoding='async'/></div> 1578 <div> 1579 <div class="name">Rami Badrah</div> 1580 <div class="role">E-commerce Expert | Consultant in</div> 1581 </div> 1582 </div> 1583 <span class="bl-feat-go">Read article <span aria-hidden="true">→</span></span> 1584 </div> 1585 </div> 1586 1587 </a> 1588 </div> 1589 </div> 1590 1591 1592<!-- ============================================================ 1593 POST GRID 1594 ============================================================ --> 1595 1596 <div class="bl-grid-wrap"> 1597 <div class="wrap"> 1598 1599 <div class="bl-grid"> 1600 1601 <a class="bl-card" href="https://wpfactory.com/blog/woocommerce-limit-cart-quantity/"> 1602 <div class="bl-card-img"> 1603 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Limit-Cart-Quantity-Cap-Total-Items-in-Cart-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Limit Cart Quantity: Cap Total Items in Cart" loading="lazy" decoding="async" /> </div> 1604 <div class="bl-card-body"> 1605 <div class="bl-card-meta"> 1606 <span class="cat">WooCommerce Guides</span> 1607 <span class="sep" aria-hidden="true">·</span> 1608 <span>Sep 27</span> 1609 </div> 1610 <h3 class="bl-card-title">WooCommerce Limit Cart Quantity: Cap Total Items in Cart</h3> 1611 <p class="bl-card-excerpt">Quick Answer: WooCommerce Limit Cart Quantity To limit cart quantity in WooCommerce, you cap the total number of items a customer can have across…</p> 1612 <div class="bl-card-foot"> 1613 <div class="bl-card-author"> 1614 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&
1614r=g 2x' class='avatar avatar-48 photo' height='48' width='48' decoding='async'/></div> 1615 <span class="name">Rami Badrah</span> 1616 </div> 1617 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1618 </div> 1619 </div> 1620 </a> 1621 1622 1623 <a class="bl-card" href="https://wpfactory.com/blog/woocommerce-variable-product-quantity/"> 1624 <div class="bl-card-img"> 1625 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Variable-Product-Quantity-Rules-Per-Variation-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Variable Product Quantity Rules (Per Variation)" loading="lazy" decoding="async" /> </div> 1626 <div class="bl-card-body"> 1627 <div class="bl-card-meta"> 1628 <span class="cat">WooCommerce Guides</span> 1629 <span class="sep" aria-hidden="true">·</span> 1630 <span>Sep 22</span> 1631 </div> 1632 <h3 class="bl-card-title">WooCommerce Variable Product Quantity Rules (Per Variation)</h3> 1633 <p class="bl-card-excerpt">Quick Answer: WooCommerce Variable Product Quantity Rules A variable product in WooCommerce holds several variations, and each one can carry its own minimum, maximum,…</p> 1634 <div class="bl-card-foot"> 1635 <div class="bl-card-author"> 1636 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&r=g 2x' class='avatar avatar-48 photo' height='48' width='48' decoding='async'/></div> 1637 <span class="name">Rami Badrah</span> 1638 </div> 1639 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1640 </div> 1641 </div> 1642 </a> 1643 1644 1645 <a class="bl-card" href="https://wpfactory.com/blog/woocommerce-minimum-order-amount-by-country/"> 1646 <div class="bl-card-img"> 1647 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Minimum-Order-Amount-by-Country-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Minimum Order Amount by Country (Free Tool)" loading="lazy" decoding="async" /> </div> 1648 <div class="bl-card-body"> 1649 <div class="bl-card-meta"> 1650 <span class="cat">WooCommerce Guides</span> 1651 <span class="sep" aria-hidden="true">·</span> 1652 <span>Sep 17</span> 1653 </div> 1654 <h3 class="bl-card-title">WooCommerce Minimum Order Amount by Country (Free Tool)</h3> 1655 <p class="bl-card-excerpt">Quick Answer: WooCommerce Minimum Order Amount by Country WooCommerce has no built-in way to set a different minimum order amount for each country. The…</p> 1656 <div class="bl-card-foot"> 1657 <div class="bl-card-author"> 1658 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&r=g 2x' class='avatar avatar-48 photo' height='48' width='48' decoding='async'/></div> 1659 <span class="name">Rami Badrah</span> 1660 </div> 1661 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1662 </div> 1663 </div> 1664 </a> 1665 1666 1667 <a class="bl-card" href="https://wpfactory.com/blog/woocommerce-price-per-unit/"> 1668 <div class="bl-card-img"> 1669 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Price-per-Unit-Sell-by-Weight-Length-or-Volume-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Price per Unit: Sell by Weight, Length or Volume" loading="lazy" decoding="async" /> </div> 1670 <div class="bl-card-body"> 1671 <div class="bl-card-meta"> 1672 <span class="cat">WooCommerce Guides</span> 1673 <span class="sep" aria-hidden="true">·</span> 1674 <span>Sep 15</span> 1675 </div> 1676 <h3 class="bl-card-title">
1676WooCommerce Price per Unit: Sell by Weight, Length or Volume</h3> 1677 <p class="bl-card-excerpt">Quick Answer: WooCommerce Price per Unit A WooCommerce price per unit setup lets you sell one product by weight, length, or volume instead of…</p> 1678 <div class="bl-card-foot"> 1679 <div class="bl-card-author"> 1680 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div> 1681 <span class="name">Rami Badrah</span> 1682 </div> 1683 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1684 </div> 1685 </div> 1686 </a> 1687 1688 1689 <a class="bl-card" href="https://wpfactory.com/blog/woocommerce-hide-add-to-cart-button/"> 1690 <div class="bl-card-img"> 1691 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Hide-Add-to-Cart-Button-for-Minimum-Quantity-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Hide Add to Cart Button for Minimum Quantity" loading="lazy" decoding="async" /> </div> 1692 <div class="bl-card-body"> 1693 <div class="bl-card-meta"> 1694 <span class="cat">WooCommerce Guides</span> 1695 <span class="sep" aria-hidden="true">·</span> 1696 <span>Sep 8</span> 1697 </div> 1698 <h3 class="bl-card-title">WooCommerce Hide Add to Cart Button for Minimum Quantity</h3> 1699 <p class="bl-card-excerpt">Quick Answer: WooCommerce Hide Add to Cart Button for Minimum Quantity WooCommerce does not hide the Add to Cart button based on quantity rules…</p> 1700 <div class="bl-card-foot"> 1701 <div class="bl-card-author"> 1702 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div> 1703 <span class="name">Rami Badrah</span> 1704 </div> 1705 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1706 </div> 1707 </div> 1708 </a> 1709 1710 1711 <a class="bl-card" href="https://wpfactory.com/blog/woocommerce-restaurant-ordering/"> 1712 <div class="bl-card-img"> 1713 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Restaurant-Ordering-Quantity-Rules-for-Food-Stores-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Restaurant Ordering: Quantity Rules for Food Stores" loading="lazy" decoding="async" /> </div> 1714 <div class="bl-card-body"> 1715 <div class="bl-card-meta"> 1716 <span class="cat">WooCommerce Guides</span> 1717 <span class="sep" aria-hidden="true">·</span> 1718 <span>Sep 6</span> 1719 </div> 1720 <h3 class="bl-card-title">WooCommerce Restaurant Ordering: Quantity Rules for Food Stores</h3> 1721 <p class="bl-card-excerpt">Quick Answer: WooCommerce Restaurant Ordering and Quantity Rules WooCommerce does not come with restaurant-specific ordering rules out of the box. To control portion sizes,…</p> 1722 <div class="bl-card-foot"> 1723 <div class="bl-card-author"> 1724 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div> 1725 <span class="name">Rami Badrah</span> 1726 </div> 1727 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1728 </div> 1729 </div> 1730 </a> 1731 1732 1733 <a class="bl-card" href="https://wpfactory.com/blog/maximum-order-value-in-woocommerce/"> 1734 <div class="bl-card-img"> 1735 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/How-to-Set-Maximum-Order-Value-in-WooCommerce-Fraud-and-Stock-Control-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="How to Set Maximum Order Value in WooCommerce (Fraud and Stock Control)" loading="lazy" decoding="async" /> </div> 1736 <div class="bl-card-body"> 1737 <div class="bl-card-meta"> 1738 <span class="cat">WooCommerce Guides</span> 1739 <span class="sep" aria-hidden="true">·</span> 1740 <span>Aug 31</span> 1741 </div> 1742 <h3 class="bl-card-title">How to Set Maximum Order Value in WooCommerce (Fraud and Stock Control)</h3> 1743 <p class="bl-card-excerpt">Quick Answer: Maximum Order Value in WooCommerce WooCommerce does not include a built-in maximum order value cap. To block orders above a set threshold,…</p> 1744 <div class="bl-card-foot"> 1745 <div class="bl-card-author"> 1746 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&
1746r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div> 1747 <span class="name">Rami Badrah</span> 1748 </div> 1749 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1750 </div> 1751 </div> 1752 </a> 1753 1754 1755 <a class="bl-card" href="https://wpfactory.com/blog/woocommerce-limit-purchases-per-customer-lifetime-period/"> 1756 <div class="bl-card-img"> 1757 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Limit-Purchases-Per-Customer-Lifetime-Period-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Limit Purchases Per Customer (Lifetime + Period)" loading="lazy" decoding="async" /> </div> 1758 <div class="bl-card-body"> 1759 <div class="bl-card-meta"> 1760 <span class="cat">WooCommerce Guides</span> 1761 <span class="sep" aria-hidden="true">·</span> 1762 <span>Aug 30</span> 1763 </div> 1764 <h3 class="bl-card-title">WooCommerce Limit Purchases Per Customer (Lifetime + Period)</h3> 1765 <p class="bl-card-excerpt">Quick Answer: WooCommerce Limit Purchases Per Customer A WooCommerce limit purchases per customer rule caps how much one shopper can buy of a product,…</p> 1766 <div class="bl-card-foot"> 1767 <div class="bl-card-author"> 1768 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div> 1769 <span class="name">Rami Badrah</span> 1770 </div> 1771 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1772 </div> 1773 </div> 1774 </a> 1775 1776 1777 <a class="bl-card" href="https://wpfactory.com/blog/woocommerce-case-quantity-pricing/"> 1778 <div class="bl-card-img"> 1779 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Case-Quantity-Pricing-Sell-by-Box-or-Pallet-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Case Quantity Pricing: Sell by Box or Pallet" loading="lazy" decoding="async" /> </div> 1780 <div class="bl-card-body"> 1781 <div class="bl-card-meta"> 1782 <span class="cat">WooCommerce Guides</span> 1783 <span class="sep" aria-hidden="true">·</span> 1784 <span>Aug 26</span> 1785 </div> 1786 <h3 class="bl-card-title">WooCommerce Case Quantity Pricing: Sell by Box or Pallet</h3> 1787 <p class="bl-card-excerpt">Quick Answer: What Is WooCommerce Case Quantity Pricing? WooCommerce case quantity pricing means selling a product in fixed pack sizes, a box or a…</p> 1788 <div class="bl-card-foot"> 1789 <div class="bl-card-author"> 1790 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div> 1791 <span class="name">Rami Badrah</span> 1792 </div> 1793 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1794 </div> 1795 </div> 1796 </a> 1797 1798 1799 <a class="bl-card" href="https://wpfactory.com/blog/woocommerce-minimum-order-amount-by-payment-method/"> 1800 <div class="bl-card-img"> 1801 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Minimum-Order-Amount-by-Payment-Method-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Minimum Order Amount by Payment Method (Cash on Delivery and More)" loading="lazy" decoding="async" /> </div> 1802 <div class="bl-card-body"> 1803 <div class="bl-card-meta"> 1804 <span class="cat">WooCommerce Guides</span> 1805 <span class="sep" aria-hidden="true">·</span> 1806 <span>Aug 23</span> 1807 </div> 1808 <h3 class="bl-card-title">WooCommerce Minimum Order Amount by Payment Method (Cash on Delivery and More)</h3> 1809 <p class="bl-card-excerpt">Quick Answer: WooCommerce Minimum Order Amount by Payment Method Tying a WooCommerce minimum order amount to a payment method means a gateway only appears…</p> 1810 <div class="bl-card-foot"> 1811 <div class="bl-card-author"> 1812 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&
1812r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div> 1813 <span class="name">Rami Badrah</span> 1814 </div> 1815 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1816 </div> 1817 </div> 1818 </a> 1819 1820 1821 <a class="bl-card" href="https://wpfactory.com/blog/woocommerce-minimum-order-amount-by-user-role/"> 1822 <div class="bl-card-img"> 1823 <img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Minimum-Order-Amount-by-User-Role-Wholesale-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Minimum Order Amount by User Role (Wholesale)" loading="lazy" decoding="async" /> </div> 1824 <div class="bl-card-body"> 1825 <div class="bl-card-meta"> 1826 <span class="cat">WooCommerce Guides</span> 1827 <span class="sep" aria-hidden="true">·</span> 1828 <span>Aug 19</span> 1829 </div> 1830 <h3 class="bl-card-title">WooCommerce Minimum Order Amount by User Role (Wholesale)</h3> 1831 <p class="bl-card-excerpt">Quick Answer: WooCommerce Minimum Order Amount by User Role A WooCommerce minimum order amount by user role sets a different cart spend floor for…</p> 1832 <div class="bl-card-foot"> 1833 <div class="bl-card-author"> 1834 <div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&d=mm&r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div> 1835 <span class="name">Rami Badrah</span> 1836 </div> 1837 <span class="bl-card-go">Read <span aria-hidden="true">→</span></span> 1838 </div> 1839 </div> 1840 </a> 1841 1842 </div> 1843 1844 <nav class="bl-pagination" aria-label="Posts pagination"> 1845 <ul> 1846 <li><span aria-current="page" class="page-numbers current">1</span></li> 1847 <li><a class="page-numbers" href="https://wpfactory.com/blog/page/2/">2</a></li> 1848 <li><a class="page-numbers" href="https://wpfactory.com/blog/page/3/">3</a></li> 1849 <li><span class="page-numbers dots">…</span></li> 1850 <li><a class="page-numbers" href="https://wpfactory.com/blog/page/23/">23</a></li> 1851 <li><a class="next page-numbers" href="https://wpfactory.com/blog/page/2/">→</a></li> 1852 </ul> 1853 </nav> 1854 1855 </div> 1856 </div> 1857 1858 1859 1860<!-- ============================================================ 1861 ALL ACCESS BAND 1862 ============================================================ --> 1863<section class="bl-aa" aria-label="All Access lifetime bundle"> 1864 <div class="wrap"> 1865 <div class="bl-aa-grid"> 1866 1867 <div> 1868 <span class="bl-aa-kicker">all access · lifetime</span> 1869 <h2>The plugins behind <span class="em">most of what we write about.</span></h2> 1870 <p class="bl-aa-lede"> 1871 A lot of the posts here reference WPFactory plugins because that's what we build with. <strong>All Access gets you every plugin we make</strong>, on as many sites as you run. Pay once. Own it. 1872 </p> 1873 <div class="bl-aa-ctas"> 1874 <a class="btn btn-cream" href="https://wpfactory.com/all-access-lifetime-deal/">Get All Access lifetime <span class="arrow" aria-hidden="true">→</span></a> 1875 <a class="btn btn-ghost bl-aa-ghost" href="https://wpfactory.com/all-access-lifetime-deal/">See what's included</a> 1876 </div> 1877 </div> 1878 1879 <div class="bl-aa-price-card"> 1880 <span class="label">lifetime, once</span> 1881 <div class="bl-aa-price"> 1882 <span class="currency">$</span> 1883 <span class="amt">499</span> 1884 <span class="per">once</span> 1885 </div> 1886 <div class="bl-aa-price-sub">vs. $59.99/yr per plugin, break-even after 9 plugins</div> 1887 <ul class="bl-aa-feat"> 1888 <li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg><span>Every WPFactory plugin, current and future</span></li> 1889 <li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg><span>Unlimited sites, no per-site caps</span></li> 1890 <li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg><span>Lifetime updates, no renewals</span></li> 1891 <li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg><span>30-day refund, no questions asked</span></li> 1892 </ul> 1893 </div> 1894 1895 </div> 1896 </div> 1897</section> 1898 1899 1900</main> 1901 1902 1903</div></div><!-- #content --> 1904 1905 1906<style> 1907/* ============================================================ 1908 FOOTER â component-scoped styles 1909 Assumes design tokens are already on :root globally. 1910 ============================================================ */ 1911 1912.site-footer{background:var(--bg);border-top:1px solid var(--line);padding:72px 0 32px} 1913 1914.footer-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:48px;margin-bottom:48px} 1915@media(max-width:980px){.footer-grid{grid-template-columns:1fr 1fr;gap:36px}} 1916@media(max-width:560px){.footer-grid{grid-template-columns:1fr;gap:32px}} 1917 1918.site-footer .brand, 1919.site-footer .brand:link, 1920.site-footer .brand:visited{display:flex;align-items:center;color:var(--text);text-decoration:none} 1921.site-footer .brand-logo{height:30px;width:auto;display:block;color:inherit} 1922 1923.footer-brand p{font-size:13.5px;color:var(--text-3);line-height:1.55;margin:14px 0 18px;max-width:32ch} 1924 1925.footer-brand .socials{display:flex;gap:8px;margin-top:18px} 1926.site-footer .footer-brand .socials a, 1927.site-footer .footer-brand .socials a:link, 1928.site-footer .footer-brand .socials a:visited{width:32px;height:32px;border-radius:8px;background:var(--bg-2);color:var(--text-2);display:grid;place-items:center;transition:background .15s,color .15s,transform .15s;text-decoration:none} 1929.site-footer .footer-brand .socials a:hover, 1930.site-footer .footer-brand .socials a:focus{background:var(--purple);color:#FFF;transform:translateY(-2px)} 1931.footer-brand .socials svg{width:14px;
1931height:14px} 1932 1933.footer-col h6{font-family:var(--font-mono);font-size:11px;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--text);margin:0 0 16px} 1934.footer-col ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:9px} 1935.site-footer .footer-col li a, 1936.site-footer .footer-col li a:link, 1937.site-footer .footer-col li a:visited{font-size:13.5px;color:var(--text-3);transition:color .15s,padding-left .15s;text-decoration:none} 1938.site-footer .footer-col li a:hover, 1939.site-footer .footer-col li a:focus{color:var(--purple);padding-left:3px} 1940[data-theme="dark"] .site-footer .footer-col li a:hover, 1941[data-theme="dark"] .site-footer .footer-col li a:focus{color:var(--purple-light)} 1942.site-footer .footer-cta-link, 1943.site-footer .footer-cta-link:link, 1944.site-footer .footer-cta-link:visited{color:var(--purple);font-weight:700} 1945[data-theme="dark"] .site-footer .footer-cta-link, 1946[data-theme="dark"] .site-footer .footer-cta-link:link, 1947[data-theme="dark"] .site-footer .footer-cta-link:visited{color:var(--purple-light)} 1948 1949.footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;padding-top:24px;border-top:1px solid var(--line);font-size:12px;color:var(--text-3)} 1950.footer-bottom .legal-links{display:flex;gap:18px;flex-wrap:wrap} 1951.footer-bottom .legal-links a{color:var(--text-3);transition:color .15s} 1952.footer-bottom .legal-links a:hover{color:var(--text)} 1953 1954/* Minimal footer (cart + checkout): slim legal strip only, no grid above it. */ 1955.site-footer.is-minimal{padding:24px 0} 1956.site-footer.is-minimal .footer-bottom{padding-top:0;border-top:0} 1957</style> 1958 1959<footer id="colophon" class="site-footer" role="contentinfo"> 1960 <div class="wrap"> 1961 <div class="footer-grid"> 1962 1963 <!-- Brand + tagline + socials --> 1964 <div class="footer-col footer-brand"> 1965 <a class="brand" href="https://wpfactory.com/" aria-label="WPFactory home"> 1966 <svg class="brand-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 712 201" fill="none" role="img" aria-hidden="true"> 1967 <!-- Wordmark: uses currentColor so it inherits theme text color --> 1968 <path fill-rule="evenodd" clip-rule="evenodd" d="M648.803 92.7097C651.238 91.5676 653.604 90.5507 655.895 89.6578L654.698 76.3413C649.806 77.5478 644.837 79.9218 640.639 82.6324L639.474 77.2605H627.583V127.791H641.958V96.5327C644.137 95.0538 646.411 93.8312 648.803 92.7097ZM603.287 115.034C601.783 116.501 599.516 117.186 596.623 117.2C591.077 117.176 587.758 114.574 587.775 108.952V96.0961C587.757 90.4771 591.076 87.8768 596.623 87.8515C602.169 87.8756 605.49 90.4771 605.473 96.0961V108.952C605.482 111.518 604.779 113.576 603.287 115.034ZM582.421 125.87C585.77 127.775 590.484 128.789 596.623 128.852C604.93 128.77 614.226 126.727 617.884 118.437C619.241 115.358 619.901 112.057 619.851 108.534V96.5178C619.954 89.2798 617.432 82.9427 610.83 79.1829C607.477 77.2755 602.768 76.2609 596.624 76.2C588.319 76.2815 579.025 78.3257 575.363 86.614C574.005 89.6935 573.35 92.9959 573.401 96.5178V108.534C573.297 115.773 575.817 122.11 582.421 125.87ZM560.948 128.342C562.704 128.037 564.377 127.633 565.968 127.128L564.313 116.721C562.379 117.26 560.312 117.522 558.304 117.504C555.965 117.535 554.478 116.452 554.447 114.046V88.3812H565.645L566.431 77.2605H554.447V62.7984L540.069 64.7576V76.6676V88.9741V116.164C540.138 125.861 546.311 128.929 555.374 128.851C557.157 128.846 559.018 128.674 560.948 128.342ZM511.325 108.631V96.4189C511.243 90.2944 514.527 88.0468 520.49 88.0641C523.931 88.079 527.458 88.5111 530.82 89.2166L532.588 77.6581C528.613 76.8055 524.566 76.185 520.49 76.1988C505.547 76.1161 496.812 80.9399 496.949 96.6235V108.426C496.812 124.11 505.549 128.934 520.49 128.85C524.569 128.866 528.617 128.242 532.588 127.391L530.82 115.837C527.407 116.579 523.99 116.984 520.49 116.984C514.527 117.004 511.243 114.756 511.325 108.631ZM474.201 109.201V116.12C471.3 117.469 468.919 118.137 465.679 118.155C462.42 118.179 460.813 116.763 460.84 113.518C460.801 110.017 462.914 109.153 466.116 109.2L474.201 109.201ZM476.849 127.791H488.576V95.3538C488.79 79.4897 482.344 76.1437 466.871 76.1988C460.811 76.2241 454.445 76.948 448.606 78.5728L450.46 88.9155C455.011 88.0652 459.625 87.5355 464.261 87.5321C470.553 87.4746 474.557 88.2295 474.199 95.2641V99.7788H462.2C452.082 99.6949 447.067 103.489 447.113 113.725C447.044 122.312 450.81 128.647 460.264 128.851C465.66 128.924 471.038 126.69 475.678 124.232L476.849 127.791ZM441.327 66.1847L443.092 55.3548C439.363 54.5941 435.682 54.0138 431.864 54C420.689 54.046 414.488 58.5894 414.604 69.964V78.3234H406.587V89.6555H414.604V127.79H428.98V89.6567H440.407L441.387 78.3246H428.98V71.6841C428.754 67.3269 430.312 65.5791 434.895 65.5447C437.037 65.555 439.221 65.8124 441.327 66.1847ZM368.854 115.375V92.6477C371.707 90.2255 375.618 88.3755 379.432 88.2744C383.726 88.3111 385.736 90.6035 385.686 94.7172V110.332C385.736 114.36 383.639 116.71 379.439 116.772C375.881 116.746 372.314 116.194 368.854 115.375ZM400.
1968062 110.339V94.7252C400.018 84.1377 395.852 76.2126 384.002 76.1977C378.238 76.3356 372.222 78.6348 367.435 81.704L365.691 77.2605H354.48V146L368.856 144.039V127.208C373.45 128.279 378.191 128.831 382.91 128.851C395.241 128.785 400.119 121.841 400.062 110.339ZM310.467 92.5282L321.215 127.791H337.156L346.05 77.2605H332.983L328.081 107.027L326.902 107.1L317.925 77.2605H303.231L294.151 107.102L292.969 107.028L288.068 77.2617H275L283.893 127.792H299.835L310.467 92.5282ZM676.489 145.974H689.972L695.667 128.206L712 77.2605H697.462L686.28 115.456L675.098 77.2605H660.556L676.435 127.791H681.779L676.489 145.974Z" fill="currentColor"/> 1969 <!-- Factory icon: keeps its original gradients in both light and dark mode --> 1970 <path d="M0 170.022C0 161.978 12.8917 154.648 34.0285 149.141V157.118C34.0285 167.415 42.0076 168.904 49.8416 171.375C90.9929 184.358 164.802 183.326 216.044 171.375C220.842 170.256 226.466 169.111 226.466 162.307V149.142C247.601 154.648 260.49 161.979 260.49 170.024C260.49 187.132 202.179 200.999 130.247 200.999C58.3131 200.997 0 187.13 0 170.022Z" fill="url(#wpf_lg_f0)"/> 1971 <path fill-rule="evenodd" clip-rule="evenodd" d="M139.5 80.5L138 80L99.8411 59.7194C96.9579 58.1965 87.2534 57.5184 87.2534 67.7932V81.3454L50.1356 61.7538C45.2229 59.381 34.0234 61.0757 34.0234 72.0311V149.142C57.8424 142.937 92.1292 139.043 130.242 139.043C130.67 139.043 131.095 139.048 131.522 139.048L138.888 81.9968L139.5 80.5Z" fill="#8A63CD"/> 1972 <path d="M218.488 122.568L187.636 105.805L187.546 106.065L187.636 106.909L191.359 142.662C204.583 144.336 216.452 146.533 226.468 149.143V135.167C226.468 126.196 219.313 123.005 218.488 122.568Z" fill="url(#wpf_lg_f1)"/> 1973 <path d="M187.637 106.908L188 106L176.495 3.65522C176.319 1.79771 174.524 0 172.848 0H151.766C150.191 0 148.364 1.75573 148.137 3.49491L138 80L137.5 82L187.662 107.146L187.637 106.908Z" fill="url(#wpf_lg_f2)"/> 1974 <path fill-rule="evenodd" clip-rule="evenodd" d="M191.357 142.649L194.779 175.5C202.171 174.314 209.303 172.933 216.043 171.36C220.841 170.242 226.465 169.099 226.465 162.293V149.13C216.45 146.52 204.581 144.321 191.357 142.649Z" fill="url(#wpf_lg_f3)"/> 1975 <path d="M131.5 139C131.072 138.998 130.428 139 130 139C91.8871 139 57.8424 142.943 34.0234 149.145V157.124C34.0234 167.421 42.0025 168.91 49.8366 171.381C69.72 177.653 97.0941 180.921 126 181" fill="url(#wpf_lg_f4)"/> 1976 <path fill-rule="evenodd" clip-rule="evenodd" d="M188 106L140 81L138 80L125.5 181C148.51 181.109 173.103 179.064 194.791 175.648L188 106Z" fill="url(#wpf_lg_f5)"/> 1977 <defs> 1978 <linearGradient id="wpf_lg_f0" x1="-0.000254476" y1="175.069" x2="260.491" y2="175.069" gradientUnits="userSpaceOnUse"><stop stop-color="#48DBD7"/><stop offset="1" stop-color="#01F4A0"/></linearGradient> 1979 <linearGradient id="wpf_lg_f1" x1="135.313" y1="127.603" x2="227.846" y2="127.603" gradientUnits="userSpaceOnUse"><stop stop-color="#8C63CF"/><stop offset="1" stop-color="#3847D3"/></linearGradient> 1980 <linearGradient id="wpf_lg_f2" x1="133.268" y1="53.573" x2="216.772" y2="53.573" gradientUnits="userSpaceOnUse"><stop offset="0.0456" stop-color="#8C63CF"/><stop offset="1" stop-color="#3847D3"/></linearGradient> 1981 <linearGradient id="wpf_lg_f3" x1="191.358" y1="159.074" x2="226.466" y2="159.074" gradientUnits="userSpaceOnUse"><stop stop-color="#059AE5"/><stop offset="1" stop-color="#01ACE7"/></linearGradient> 1982 <linearGradient id="wpf_lg_f4" x1="34.0234" y1="159.89" x2="131.522" y2="159.89" gradientUnits="userSpaceOnUse"><stop stop-color="#1C37D1"/><stop offset="1" stop-color="#0E70DD"/></linearGradient> 1983 <linearGradient id="wpf_lg_f5" x1="101.259" y1="122.802" x2="179.283" y2="143.417" gradientUnits="userSpaceOnUse"><stop stop-color="#2B42C9"/><stop offset="0.1908" stop-color="#2947CA"/><stop offset="0.4141" stop-color="#2255CE"/><stop offset="0.6537" stop-color="#176DD5"/><stop offset="0.9031" stop-color="#078DDE"/><stop offset="1" stop-color="#009CE2"/></linearGradient> 1984 </defs> 1985 </svg> 1986 </a> 1987 <p>50+ WooCommerce & WordPress plugins for stores that take their margin seriously. Made by humans who answer their email.</p> 1988 1989 <div class="socials"> 1990 <!-- Facebook (replaces Twitter) --> 1991 <a href="https://web.facebook.com/wordpresscodefactory" target="_blank" rel="noopener" aria-label="Facebook"> 1992 <svg viewBox="0 0 24 24" fill="currentColor"><path d="M22 12a10 10 0 1 0-11.56 9.88v-6.99H7.9V12h2.54V9.8c0-2.51 1.49-3.89 3.78-3.89 1.09 0 2.24.19 2.24.19v2.46h-1.26c-1.24 0-1.63.77-1.63 1.56V12h2.78l-.44 2.89h-2.33v6.99A10 10 0 0 0 22 12z"/></svg> 1993 </a> 1994 <!-- GitHub --> 1995 <a href="https://github.com/wpcodefactory" target="_blank" rel="noopener" aria-label="GitHub"> 1996 <svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12c0 4.42 2.87 8.17 6.84 9.49.5.09.66-.22.66-.48v-1.69c-2.78.6-3.37-1.34-3.37-1.34-.45-1.16-1.11-1.47-1.11-1.47-.91-.62.07-.61.07-.61 1 .07 1.53 1.03 1.53 1.03.89 1.52 2.34 1.08 2.91.83.09-.65.35-1.08.63-1.33-2.22-.25-4.55-1.11-4.55-4.94 0-1.09.39-1.99 1.03-2.69-.1-.25-.45-1.27.1-2.65 0 0 .84-.27 2.75 1.02.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02.55 1.38.2 2.4.1 2.65.64.7 1.03
19961.6 1.03 2.69 0 3.84-2.34 4.69-4.57 4.94.36.31.69.92.69 1.85V21c0 .27.16.59.67.49C19.13 20.16 22 16.42 22 12c0-5.52-4.48-10-10-10z"/></svg> 1997 </a> 1998 <!-- LinkedIn --> 1999 <a href="https://www.linkedin.com/company/wpfactory" target="_blank" rel="noopener" aria-label="LinkedIn"> 2000 <svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 3a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h14m-.5 15.5v-5.3a3.26 3.26 0 00-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 011.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 001.68-1.68 1.68 1.68 0 00-1.68-1.68A1.68 1.68 0 005.2 6.88a1.68 1.68 0 001.68 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"/></svg> 2001 </a> 2002 <!-- WordPress.org (official WordPress mark) --> 2003 <a href="https://profiles.wordpress.org/wpcodefactory/" target="_blank" rel="noopener" aria-label="WordPress.org"> 2004 <svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10 10-4.49 10-10S17.51 2 12 2zm0 1.2c4.85 0 8.8 3.95 8.8 8.8 0 3.46-2.01 6.46-4.92 7.9l-3.04-8.32c.57-.03 1.08-.09 1.08-.09.51-.06.45-.81-.06-.78 0 0-1.53.12-2.52.12-.93 0-2.49-.12-2.49-.12-.51-.03-.57.75-.06.78 0 0 .48.06.99.09l1.43 3.93-2.01 6.04L5.85 12c.57-.03 1.08-.09 1.08-.09.51-.06.45-.81-.06-.78 0 0-1.53.12-2.52.12-.18 0-.39 0-.6-.01.81-3.78 4.17-6.61 8.25-7.04zM3.2 12c0-1.27.27-2.48.75-3.57l4.14 11.34C5.13 18.4 3.2 15.42 3.2 12zm8.8 8.8c-.81 0-1.59-.12-2.34-.33L12 14.13l2.4 6.55c-.75.21-1.56.12-2.4.12zm8.05-13.45c.39.96.6 2.01.6 3.15 0 2.4-.9 4.86-2.91 7.05l-2.94-7.95c-.06-.21-.24-.42-.24-.69 0-.3.24-.6.6-.6.66-.03 2.4 0 2.91.21z"/></svg> 2005 </a> 2006 </div> 2007 </div> 2008 2009 <!-- Plugins (4 top plugins + All Access) --> 2010 <div class="footer-col"> 2011 <h6>Plugins</h6> 2012 <ul> 2013 <li><a href="https://wpfactory.com/item/cost-of-goods-for-woocommerce/">Cost of Goods</a></li> 2014 <li><a href="https://wpfactory.com/item/product-price-by-quantity-for-woocommerce/">Dynamic Pricing & Discounts</a></li> 2015 <li><a href="https://wpfactory.com/item/order-minimum-maximum-amount-for-woocommerce/">Order Min/Max Amount</a></li> 2016 <li><a href="https://wpfactory.com/item/email-verification-for-woocommerce/">Customer Email Verification</a></li> 2017 <li><a href="https://wpfactory.com/items/">All Plugins</a></li> 2018 <li><a href="https://wpfactory.com/all-access-lifetime-deal/" class="footer-cta-link">â All Access - Lifetime</a></li> 2019 </ul> 2020 </div> 2021 2022 <!-- Resources (changelogs removed) --> 2023 <div class="footer-col"> 2024 <h6>Resources</h6> 2025 <ul> 2026 <li><a href="https://wpfactory.com/blog/">Blog</a></li> 2027 <li><a href="https://wpfactory.com/docs/">Documentation</a></li> 2028 <li><a href="https://wpfactory.com/blog/category/case-study/">Case Studies</a></li> 2029 <li><a href="https://wpfactory.com/tools/">Free Tools</a></li> 2030 <li><a href="https://wpfactory.com/blog/category/wpfactory-ebooks/">Free eBooks</a></li> 2031 <li><a href="https://wpfactory.com/support/">Support Forums</a></li> 2032 </ul> 2033 </div> 2034 2035 <!-- Company --> 2036 <div class="footer-col"> 2037 <h6>Company</h6> 2038 <ul> 2039 <li><a href="https://wpfactory.com/about-us/">About</a></li> 2040 <li><a href="https://wpfactory.com/contact-us/">Support & Contact</a></li> 2041 <li><a href="https://wpfactory.com/affiliates/">Affiliate Program</a></li> 2042 <li><a href="https://wpfactory.com/nonprofit-commitment/">Nonprofits</a></li> 2043 <li><a href="https://wpfactory.com/my-account/">My Account</a></li> 2044 <li><a href="https://wpfactory.com/refund-policy/">Refund Policy</a></li> 2045 </ul> 2046 </div> 2047 </div> 2048 2049 <div class="footer-bottom"> 2050 <span>© 2026 WPFactory · made for WooCommerce stores · since 2013</span> 2051 <div class="legal-links"> 2052 <a href="https://wpfactory.com/terms-conditions/">Terms</a> 2053 <a href="https://wpfactory.com/cookie-policy/">Cookie Policy</a> 2054 <a href="https://wpfactory.com/refund-policy/">Refunds</a> 2055 </div> 2056 </div> 2057 </div> 2058</footer> 2059 2060 2061</div><!-- #page --> 2062
2063<script type="speculationrules"> 2064{"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/wpfactory-theme/*","/wp-content/themes/storefront/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 2065</script>
vendor: 1 bytes, line 2065
2065
2066<script> 2067 jQuery( document ).ready( function () { 2068 jQuery( 'li.discussions_tab' ).click( function () { 2069 window.location = jQuery( 'li.discussions_tab a' ).attr( 'href' ); 2070 return false; 2071 } ); 2072 } ); 2073 </script>
2073<script> 2074 jQuery( function() { 2075 function wpf_wc_go_to_tab() { 2076 var hash = window.location.hash; 2077 wpf_wc_custom_tabs = [ 'docs', 'tools', 'shortcodes', 'faq', 'free_vs_pro', 'free_version', 'developers', 'changelog' ]; 2078 for ( var i = 0, l = wpf_wc_custom_tabs.length; i < l; i++ ) { 2079 if ( '#tab-' + wpf_wc_custom_tabs[ i ] === hash ) { 2080 jQuery( '#tab-title-' + wpf_wc_custom_tabs[ i ] + ' a' ).trigger( 'click' ); 2081 break; 2082 } 2083 } 2084 } 2085 jQuery( document ).ready( function() { 2086 window.onhashchange = function() { 2087 wpf_wc_go_to_tab(); 2088 } 2089 wpf_wc_go_to_tab(); 2090 } ); 2091 } ); 2092 </script>
2092
2092<script> 2093 (function () { 2094 var c = document.body.className; 2095 c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); 2096 document.body.className = c; 2097 })(); 2098 </script>
2098 2099 <section class="screenshot_popup" id="screenshot_popup"> 2100 <div class="screenshot_popup__content"> 2101 <div class="screenshot_popup_close"> 2102 <span></span> 2103 <span></span> 2104 </div> 2105 <img src="" id="large_screenshot"> 2106 <h4 id="screenshot_title"> 2107 2108 </h4> 2109 <p id="screenshot_description"> 2110 2111 </p> 2112 <input type="hidden" name="cell_index_popup" id="cell_index_popup" value="0"> 2113 </div> 2114 2115 <button id="previous-popup" class="flickity-button-popup flickity-prev-next-button-popup previous-popup" 2116 type="button" aria-label="Previous"> 2117 <svg id="previous-popup-svg" class="flickity-button-icon-popup" viewBox="0 0 100 100"> 2118 <path d="M 10,50 L 60,100 L 70,90 L 30,50 L 70,10 L 60,0 Z" class="arrow"></path> 2119 </svg> 2120 </button> 2121 2122 <button id="next-popup" class="flickity-button-popup flickity-prev-next-button-popup next-popup" 2123 type="button" aria-label="Next"> 2124 <svg id="next-popup-svg" class="flickity-button-icon-popup" viewBox="0 0 100 100"> 2125 <path d="M 10,50 L 60,100 L 70,90 L 30,50 L 70,10 L 60,0 Z" class="arrow" 2126 transform="translate(100, 100) rotate(180) "></path> 2127 </svg> 2128 </button> 2129 2130 </section> 2131
2131<script id="wcPPCPSettings"> 2132 window['wcPPCPSettings'] = {"cart":{"total":"0.00","totalCents":0,"needsShipping":false,"isEmpty":true,"currency":"USD","countryCode":"US","availablePaymentMethods":["cpsw_stripe","ppcp"],"lineItems":[],"shippingOptions":[],"selectedShippingMethod":""},"requiredFields":["billing_first_name","billing_last_name","billing_email","shipping_first_name","shipping_last_name","shipping_country","shipping_phone","account_password"],"version":"2.0.27","generalData":{"clientId":"BAAo3Qw9TgW-zu60L_ExhdcK3iKhny0dUjzmDcvtcMpYL9ig__YAK9fQIvHgiPlAp8iFNRM0fNN1vfaukc","environment":"production","partner_id":"PaymentPlugins_PCP","page":null,"version":"2.0.27","is_admin":false,"restRoutes":{"connect/account":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/account/connect"},"domain-association-file":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/domain-association-file"},"cart/item":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/item"},"cart/shipping":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/shipping"},"cart/billing":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/billing"},"cart/checkout":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/checkout"},"cart/refresh":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/refresh"},"cart/order-update-callback":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/order-update-callback"},"cart/order":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/order"},"order/pay":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/order/pay"},"billing-agreement/token":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/billing-agreement/token/?(?P\u003Cid\u003E[\\w-]+)"},"webhook":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/webhook/(?P\u003Cenvironment\u003E[\\w]+)"},"admin/order":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/order/(?P\u003Corder_id\u003E[\\w]+)"},"admin/tracking":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/order/(?P\u003Corder_id\u003E[\\w]+)/tracking"},"admin/carriers":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/order/(?P\u003Corder_id\u003E[\\w]+)/carriers"},"admin/webhook":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/webhook"},"setup-tokens":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/vault/setup-tokens"},"payment-tokens":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/vault/payment-tokens"},"checkout/validation":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/checkout-validation"}},"ajaxRestPath":"/?wc-ajax=wc_ppcp_frontend_request&path=/%s"},"errorMessages":{"terms":"Please check the terms and conditions before proceeding.","invalid_client_id":"Invalid PayPal client ID. Please check your API Settings.","invalid_currency":"PayPal does not support currency %. Please use a supported currency.","order_button_click":"Please click the %s button before placing your order.","gpay_order_button_click":"Please click the Google Pay button before placing your order","order_missing_address":"Please fill out all billing and shipping fields before clicking PayPal.","order_missing_billing_address":"Please fill out all billing fields before clicking PayPal.","cancel":"Cancel","required_fields":"Please fill out all required fields.","Y_N_NO":"3DS authentication failed.","Y_R_NO":"3DS authentication was rejected.","Y_U_UNKNOWN":"Unable to complete 3DS authentication. Please try again.","Y_U_NO":"Unable to complete 3DS authentication. Please try again.","Y_C_UNKNOWN":"3DS authentication challenge required but could not be completed. Please try again.","Y__NO":"3DS authentication could not be processed. Please try again.","U__UNKNOWN":"3DS system is currently unavailable. Please try again later.","___UNKNOWN":"3DS authentication status unknown. Please try again.","total":"Total","ERROR_VALIDATING_MERCHANT":"Domain registration is not complete. Visit https://paymentplugins.com/documentation/paypal/applepay/setup/ for instructions on completing domain registration."},"i18n":{"locale":"{\"AE\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"required\":false}},\"AF\":{\"state\":{\"required\":false,\"hidden\":true}},\"AL\":{\"state\":{\"label\":\"County\"}},\"AO\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"label\":\"Province\"}},\"AT\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"AU\":{\"city\":{\"label\":\"Suburb\"},\"postcode\":{\"label\":\"Postcode\"},\"state\":{\"label\":\"State\"}},\"AX\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"BA\":{\"postcode\":{\"priority\":65},\"state\":{\"label\":\"Canton\",\"required\":false,\"hidden\":true}},\"BD\":{\"postcode\":{\"required\":false},\"state\":{\"label\":\"District\"}},\"BE\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"BG\":{\"state\":{\"required\":false}},\"BH\":{\"postcode\":{\"required\":false},\"state\":{\"required\":false,\"hidden\":true}},\"BI\":{\"state\":{\"required\":false,\"hidden\":true}},\"BO\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"label\":\"Department\"}},\"BS\":{\"postcode\":{\"required\":false,\"hidden\":true}},\"BW\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"required\":false,\"hidden\":true,\"label\":\"District\"}},\"BZ\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"required\":false}},\"CA\":{\"postcode\":{\"label\":\"Postal code\"},\"state\":{\"label\":\"Province\"}},\"CH\":{\"postcode\":{\"priority\":65},\"state\":{\"label\":\"Canton\",\"required\":false}},\"CL\":{\"city\":{\"required\":true},\"postcode\":{\"required\":false,\"hidden\":false},\"state\":{\"label\":\"Region\"}},\"CN\":{\"state\":{\"label\":\"Province\"}},\"CO\":{\"postcode\":{\"required\":false},\"state\":{\"label\":\"Department\"}},\"CR\":{\"state\":{\"label\":\"Province\"}},\"CW\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"required\":false}},\"CY\":{\"state\":{\"required\":false,\"hidden\":true}},\"CZ\":{\"state\":{\"required\":false,\"hidden\":true}},\"DE\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false}},\"DK\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"DO\":{\"state\":{\"label\":\"Province\"}},\"EC\":{\"state\":{\"label\":\"Province\"}},\"EE\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"ET\":{\"state\":{\"required\":false,\"hidden\":true}},\"FI\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"FR\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"GG\":{\"state\":{\"required\":false,\"label\":\"Parish\"}},\"GH\":{\"postcode\":{\"required\":false},\"state\":{\"label\":\"Region\"}},\"GP\":{\"state\":{\"required\":false,\"hidden\":true}},\"GF\":{\"state\":{\"required\":false,\"hidden\":true}},\"GR\":{\"state\":{\"required\":false}},\"GT\":{\"postcode\":{\"required\":false},\"state\":{\"label\":\"Department\"}},\"HK\":{\"postcode\":{\"required\":false},\"city\":{\"label\":\"Town \\/ District\"},\"state\":{\"label\":\"Region\"}},\"HN\":{\"state\":{\"label\":\"Department\"}},\"HU\":{\"last_name\":{\"class\":[\"form-row-first\"],\"priority\":10},\"first_name\":{\"class\":[\"form-row-last\"],\"priority\":20},\"postcode\":{\"class\":[\"form-row-first\",\"address-field\"],\"priority\":65},\"city\":{\"class\":[\"form-row-last\",\"address-field\"]},\"address_1\":{\"priority\":71},\"address_2\":{\"priority\":72},\"state\":{\"label\":\"County\",\"required\":false}},\"ID\":{\"state\":{\"label\":\"Province\"}}
2132,\"IE\":{\"postcode\":{\"required\":true,\"label\":\"Eircode\"},\"state\":{\"label\":\"County\"}},\"IS\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"IL\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"IM\":{\"state\":{\"required\":false,\"hidden\":true}},\"IN\":{\"postcode\":{\"label\":\"PIN Code\"},\"state\":{\"label\":\"State\"}},\"IR\":{\"state\":{\"priority\":50},\"city\":{\"priority\":60},\"address_1\":{\"priority\":70},\"address_2\":{\"priority\":80}},\"IT\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":true,\"label\":\"Province\"}},\"JM\":{\"city\":{\"label\":\"Town \\/ City \\/ Post Office\"},\"postcode\":{\"required\":false,\"label\":\"Postal Code\"},\"state\":{\"required\":true,\"label\":\"Parish\"}},\"JP\":{\"last_name\":{\"class\":[\"form-row-first\"],\"priority\":10},\"first_name\":{\"class\":[\"form-row-last\"],\"priority\":20},\"postcode\":{\"class\":[\"form-row-first\",\"address-field\"],\"priority\":65},\"state\":{\"label\":\"Prefecture\",\"class\":[\"form-row-last\",\"address-field\"],\"priority\":66},\"city\":{\"priority\":67},\"address_1\":{\"priority\":68},\"address_2\":{\"priority\":69}},\"KN\":{\"postcode\":{\"required\":false,\"label\":\"Postal code\"},\"state\":{\"required\":true,\"label\":\"Parish\"}},\"KR\":{\"state\":{\"required\":false,\"hidden\":true}},\"KW\":{\"state\":{\"required\":false,\"hidden\":true}},\"LV\":{\"state\":{\"label\":\"Municipality\",\"required\":false}},\"LB\":{\"state\":{\"required\":false,\"hidden\":true}},\"MF\":{\"state\":{\"required\":false,\"hidden\":true}},\"MQ\":{\"state\":{\"required\":false,\"hidden\":true}},\"MT\":{\"state\":{\"required\":false,\"hidden\":true}},\"MZ\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"label\":\"Province\"}},\"NI\":{\"state\":{\"label\":\"Department\"}},\"NL\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"NG\":{\"postcode\":{\"label\":\"Postcode\",\"required\":false,\"hidden\":true},\"state\":{\"label\":\"State\"}},\"NZ\":{\"postcode\":{\"label\":\"Postcode\"},\"state\":{\"required\":false,\"label\":\"Region\"}},\"NO\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"NP\":{\"state\":{\"label\":\"State \\/ Zone\"},\"postcode\":{\"required\":false}},\"PA\":{\"state\":{\"label\":\"Province\"}},\"PL\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"PR\":{\"city\":{\"label\":\"Municipality\"},\"state\":{\"required\":false,\"hidden\":true}},\"PT\":{\"state\":{\"required\":false,\"hidden\":true}},\"PY\":{\"state\":{\"label\":\"Department\"}},\"RE\":{\"state\":{\"required\":false,\"hidden\":true}},\"RO\":{\"state\":{\"label\":\"County\",\"required\":true}},\"RS\":{\"city\":{\"required\":true},\"postcode\":{\"required\":true},\"state\":{\"label\":\"District\",\"required\":false}},\"RW\":{\"state\":{\"required\":false,\"hidden\":true}},\"SG\":{\"state\":{\"required\":false,\"hidden\":true},\"city\":{\"required\":false}},\"SK\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"SI\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"SR\":{\"postcode\":{\"required\":false,\"hidden\":true}},\"SV\":{\"state\":{\"label\":\"Department\"}},\"ES\":{\"postcode\":{\"priority\":65},\"state\":{\"label\":\"Province\"}},\"LI\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"LK\":{\"state\":{\"required\":false,\"hidden\":true}},\"LU\":{\"state\":{\"required\":false,\"hidden\":true}},\"MD\":{\"state\":{\"label\":\"Municipality \\/ District\"}},\"SE\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"TR\":{\"postcode\":{\"priority\":65},\"state\":{\"label\":\"Province\"}},\"UG\":{\"postcode\":{\"required\":false,\"hidden\":true},\"city\":{\"label\":\"Town \\/ Village\",\"required\":true},\"state\":{\"label\":\"District\",\"required\":true}},\"US\":{\"postcode\":{\"label\":\"ZIP Code\"},\"state\":{\"label\":\"State\"}},\"UY\":{\"state\":{\"label\":\"Department\"}},\"GB\":{\"postcode\":{\"label\":\"Postcode\"},\"state\":{\"label\":\"County\",\"required\":false}},\"ST\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"label\":\"District\"}},\"VN\":{\"state\":{\"required\":false,\"hidden\":true},\"postcode\":{\"priority\":65,\"required\":false,\"hidden\":false},\"address_2\":{\"required\":false,\"hidden\":false}},\"WS\":{\"postcode\":{\"required\":false,\"hidden\":true}}
2132,\"YT\":{\"state\":{\"required\":false,\"hidden\":true}},\"ZA\":{\"state\":{\"label\":\"Province\"}},\"ZW\":{\"postcode\":{\"required\":false,\"hidden\":true}},\"default\":{\"first_name\":{\"label\":\"First name\",\"required\":true,\"class\":[\"form-row-first\"],\"autocomplete\":\"given-name\",\"priority\":10},\"last_name\":{\"label\":\"Last name\",\"required\":true,\"class\":[\"form-row-last\"],\"autocomplete\":\"family-name\",\"priority\":20},\"company\":{\"label\":\"Company name\",\"class\":[\"form-row-wide\"],\"autocomplete\":\"organization\",\"priority\":30,\"required\":false},\"country\":{\"type\":\"country\",\"label\":\"Country \\/ Region\",\"required\":true,\"class\":[\"form-row-wide\",\"address-field\",\"update_totals_on_change\"],\"autocomplete\":\"country\",\"priority\":40,\"hidden\":false},\"address_1\":{\"label\":\"Street address\",\"placeholder\":\"House number and street name\",\"required\":false,\"class\":[\"form-row-wide\",\"address-field\"],\"autocomplete\":\"address-line1\",\"priority\":50},\"address_2\":{\"label\":\"Apartment, suite, unit, etc.\",\"label_class\":[\"screen-reader-text\"],\"placeholder\":\"Apartment, suite, unit, etc. (optional)\",\"class\":[\"form-row-wide\",\"address-field\"],\"autocomplete\":\"address-line2\",\"priority\":60,\"required\":false},\"city\":{\"label\":\"Town \\/ City\",\"required\":false,\"class\":[\"form-row-wide\",\"address-field\"],\"autocomplete\":\"address-level2\",\"priority\":70},\"state\":{\"type\":\"state\",\"label\":\"State \\/ County\",\"required\":false,\"class\":[\"form-row-wide\",\"address-field\"],\"validate\":[\"state\"],\"autocomplete\":\"address-level1\",\"priority\":80},\"postcode\":{\"label\":\"Postcode \\/ ZIP\",\"required\":false,\"class\":[\"form-row-wide\",\"address-field\"],\"validate\":[\"postcode\"],\"autocomplete\":\"postal-code\",\"priority\":90},\"phone\":{\"label\":\"Phone\",\"required\":true,\"type\":\"tel\",\"class\":[\"form-row-wide\"],\"validate\":[\"phone\"],\"autocomplete\":\"tel\",\"priority\":100}}}","locale_fields":"{\"address_1\":\"#billing_address_1_field, #shipping_address_1_field\",\"address_2\":\"#billing_address_2_field, #shipping_address_2_field\",\"state\":\"#billing_state_field, #shipping_state_field, #calc_shipping_state_field\",\"postcode\":\"#billing_postcode_field, #shipping_postcode_field, #calc_shipping_postcode_field\",\"city\":\"#billing_city_field, #shipping_city_field, #calc_shipping_city_field\",\"country\":\"#billing_country_field, #shipping_country_field, #calc_shipping_country_field\",\"phone\":\"#billing_phone_field, #shipping_phone_field\"}"},"ppcp_data":{"title":"PayPal","sections":["checkout"],"needsSetupToken":false,"funding":["paypal"],"buttons_order":["paypal","paylater","venmo","card"],"buttonPlacement":"place_order","buttons":{"paypal":{"layout":"vertical","label":"paypal","shape":"rect","height":40,"color":"gold"},"paylater":{"layout":"vertical","label":"paypal","shape":"rect","height":40,"color":"gold"},"card":{"layout":"vertical","label":"paypal","shape":"rect","height":40,"color":"black","tagline":false},"venmo":{"layout":"vertical","shape":"rect","height":40}},"paypal_sections":["checkout","add_payment_method"],"paylater_sections":["cart","checkout","order_pay"],"credit_card_sections":["cart","checkout","order_pay"],"venmo_sections":["checkout","order_pay"],"placeOrderEnabled":false,"serverSideShippingCallback":false},"recaptcha":{"site_key":null,"i18n":{"error":"reCAPTCHA error: %s"},"paymentMethods":["ppcp"]},"queryParams":{"client-id":"BAAo3Qw9TgW-zu60L_ExhdcK3iKhny0dUjzmDcvtcMpYL9ig__YAK9fQIvHgiPlAp8iFNRM0fNN1vfaukc","intent":"capture","commit":"true","components":"buttons,messages,card-fields,googlepay,applepay","currency":"USD","enable-funding":"paylater","data-partner-attribution-id":"PaymentPlugins_PCP","locale":"en_US"},"ppcp_api":[],"ppcp_advanced":{"miniCartLocation":"below"},"ppcp_paylater_message":[]}; 2133 </script>
2133<script id="imagesloaded-js" src="https://wpfactory.com/wp-includes/js/imagesloaded.min.js?ver=5.0.0"></script>
vendor: 1 bytes, line 2133
2133
2134<script id="masonry-js" src="https://wpfactory.com/wp-includes/js/masonry.min.js?ver=4.2.2"></script>
vendor: 1 bytes, line 2134
2134
2135<script id="betterdocs-categorygrid-js" src="https://wpfactory.com/wp-content/plugins/betterdocs/assets/build/blocks/categorygrid/frontend.js?ver=a4a7e7ed1fd9a2aaf85a"></script>
vendor: 1 bytes, line 2135
2135
2136<script data-wp-strategy="defer" defer id="gtm4wp-ecommerce-generic-js" src="https://wpfactory.com/wp-content/plugins/duracelltomi-google-tag-manager/build/gtm4wp-ecommerce-generic.js?ver=2.0.3"></script>
vendor: 1 bytes, line 2136
2136
2137<script id="gtm4wp-woocommerce-js-before"> 2138window.gtm4wp_store_api_cart_url = "https:\/\/wpfactory.com\/wp-json\/wc\/store\/v1\/cart"; 2139//# sourceURL=gtm4wp-woocommerce-js-before 2140</script>
vendor: 1 bytes, line 2140
2140
2141<script id="gtm4wp-woocommerce-js" src="https://wpfactory.com/wp-content/plugins/duracelltomi-google-tag-manager/build/gtm4wp-woocommerce.js?ver=2.0.3"></script>
vendor: 1 bytes, line 2141
2141
2142<script id="eztoc-scroll-scriptjs-js-extra"> 2143var eztoc_smooth_local = {"scroll_offset":"30","add_request_uri":"","add_self_reference_link":""}; 2144//# sourceURL=eztoc-scroll-scriptjs-js-extra 2145</script>
vendor: 1 bytes, line 2145
2145
2146<script id="eztoc-scroll-scriptjs-js" src="https://wpfactory.com/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js?ver=2.0.88"></script>
vendor: 1 bytes, line 2146
2146
2147<script id="eztoc-js-cookie-js" src="https://wpfactory.com/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js?ver=2.2.1"></script>
vendor: 1 bytes, line 2147
2147
2148<script id="eztoc-jquery-sticky-kit-js" src="https://wpfactory.com/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js?ver=1.9.2"></script>
vendor: 1 bytes, line 2148
2148
2149<script id="eztoc-js-js-extra"> 2150var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"\u003Cspan class=\"\"\u003E\u003Cspan class=\"eztoc-hide\" style=\"display:none;\"\u003EToggle\u003C/span\u003E\u003Cspan class=\"ez-toc-icon-toggle-span\"\u003E\u003Csvg style=\"fill: #999;color:#999\" xmlns=\"http://www.w3.org/2000/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"\u003E\u003Cpath d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003Csvg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"\u003E\u003Cpath d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"/\u003E\u003C/svg\u003E\u003C/span\u003E\u003C/span\u003E","chamomile_theme_is_on":""}; 2151//# sourceURL=eztoc-js-js-extra 2152</script>
vendor: 1 bytes, line 2152
2152
2153<script id="eztoc-js-js" src="https://wpfactory.com/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js?ver=2.0.88-1789607412"></script>
vendor: 1 bytes, line 2153
2153
2154<script id="storefront-navigation-js-extra"> 2155var storefrontScreenReaderText = {"expand":"Expand child menu","collapse":"Collapse child menu"}; 2156//# sourceURL=storefront-navigation-js-extra 2157</script>
vendor: 1 bytes, line 2157
2157
2158<script id="storefront-navigation-js" src="https://wpfactory.com/wp-content/themes/storefront/assets/js/navigation.min.js?ver=4.6.2"></script>
vendor: 1 bytes, line 2158
2158
2159<script id="advanced-ads-find-adblocker-js" src="https://wpfactory.com/wp-content/plugins/advanced-ads/admin/assets/js/advertisement.js"></script>
vendor: 1 bytes, line 2159
2159
2160<script id="sourcebuster-js-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 2160
2160
2161<script id="wc-order-attribution-js-extra"> 2162var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https://wpfactory.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"}}; 2163//# sourceURL=wc-order-attribution-js-extra 2164</script>
vendor: 1 bytes, line 2164
2164
2165<script id="wc-order-attribution-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 2165
2165
2166<script id="advanced-ads-pro-main-js-extra"> 2167var advanced_ads_cookies = {"cookie_path":"/","cookie_domain":""}; 2168var advadsCfpInfo = {"cfpExpHours":"3","cfpClickLimit":"3","cfpBan":"7","cfpPath":"","cfpDomain":"","cfpEnabled":""}; 2169//# sourceURL=advanced-ads-pro-main-js-extra 2170</script>
vendor: 1 bytes, line 2170
2170
2171<script id="advanced-ads-pro-main-js" src="https://wpfactory.com/wp-content/plugins/advanced-ads-pro/assets/dist/advanced-ads-pro.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2171
2171
2172<script id="wpfactory-frontend-js-js-before"> 2173const WPFTFEJS = {"themeURI":"https:\/\/wpfactory.com\/wp-content\/themes\/wpfactory-theme","modulesRequired":["smooth-scroll","slider","modal","css-class-manager","menus","search"],"handheld_toggler_selector":"#site-navigation-menu-toggle","handheld_menu_selector":".wpft-handheld-navigation","search_toggler_selector":".top-right-navigation .svg-icon-search","search_bar_selector":".wpft-search-bar"} 2174//# sourceURL=wpfactory-frontend-js-js-before 2175</script>
vendor: 1 bytes, line 2175
2175
2176<script id="wpfactory-frontend-js-js" src="https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/js/frontend.min.js?ver=2.0.0"></script>
vendor: 1 bytes, line 2176
2176
2177<script id="wpfactory-frontend-carousal-js-js" src="https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/vendor/flickity-carousal/flickity-carousal.min.js?ver=2.0.0"></script>
vendor: 1 bytes, line 2177
2177
2178<script id="wpfactory-frontend-carousal-js-js-after"> 2179jQuery(function() { var $carousel = jQuery(".main-carousel").flickity({ 2180 freeScroll: true, 2181 contain: true, 2182 prevNextButtons: true, 2183 pageDots: false, 2184 groupCells: 2 2185 }); 2186 2187 var largeImages = []; 2188 2189 jQuery("img.click-to-enlarge").each(function(){ 2190 largeImages.push({ 2191 image: jQuery(this).attr("data-large-url"), 2192 title: jQuery(this).attr("data-title"), 2193 desc: jQuery(this).attr("data-desc") 2194 }); 2195 }); 2196 2197 2198 jQuery(".main-carousel").on( "staticClick.flickity", function( event, pointer, cellElement, cellIndex ) { 2199 if ( !cellElement ) { 2200 return; 2201 } 2202 2203 var fullUrl = jQuery( cellElement ).find("img.click-to-enlarge").data("large-url"); 2204 var title = jQuery( cellElement ).find("img.click-to-enlarge").data("title"); 2205 var desc = jQuery( cellElement ).find("img.click-to-enlarge").data("desc"); 2206 jQuery("#large_screenshot").attr("src", fullUrl); 2207 jQuery("#screenshot_title").html(title); 2208 jQuery("#screenshot_description").html(desc); 2209 2210 jQuery(".screenshot_popup").fadeIn(500); 2211 2212 jQuery("#cell_index_popup").val(cellIndex); 2213 2214 }); 2215 2216 2217 2218 jQuery("#previous-popup").click(function() { 2219 2220 var currentIndex = jQuery("#cell_index_popup").val(); 2221 2222 var prevIndex = parseInt(currentIndex) - 1; 2223 2224 var indexArr = largeImages[prevIndex]; 2225 2226 var fullUrl = indexArr["image"]; 2227 var title = indexArr["title"]; 2228 var desc = indexArr["desc"]; 2229 2230 jQuery("#large_screenshot").attr("src", fullUrl); 2231 jQuery("#screenshot_title").html(title); 2232 jQuery("#screenshot_description").html(desc); 2233 2234 jQuery(".screenshot_popup").fadeIn(500); 2235 2236 jQuery("#cell_index_popup").val(prevIndex); 2237 }); 2238 2239 jQuery("#next-popup").click(function() { 2240 2241 var currentIndex = jQuery("#cell_index_popup").val(); 2242 2243 var nextIndex = parseInt(currentIndex) + 1; 2244 2245 var indexArr = largeImages[nextIndex]; 2246 2247 var fullUrl = indexArr["image"]; 2248 var title = indexArr["title"]; 2249 var desc = indexArr["desc"]; 2250 2251 jQuery("#large_screenshot").attr("src", fullUrl); 2252 jQuery("#screenshot_title").html(title); 2253 jQuery("#screenshot_description").html(desc); 2254 2255 jQuery(".screenshot_popup").fadeIn(500); 2256 2257 jQuery("#cell_index_popup").val(nextIndex); 2258 }); 2259 2260 jQuery(".screenshot_popup_close").click(function() { 2261 jQuery(".screenshot_popup").fadeOut(500); 2262 }); 2263 2264 jQuery(document).on("click",".screenshot_popup", function (event) { 2265 if(event.target.id == "screenshot_popup" ){ 2266 jQuery(".screenshot_popup").fadeOut(500); 2267 } 2268 }); 2269 2270 2271 2272 }); 2273//# sourceURL=wpfactory-frontend-carousal-js-js-after 2274</script>
vendor: 1 bytes, line 2274
2274
2275<script id="wpfactory-buy-feedback-js" src="https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/js/wpfactory-buy-feedback.js?ver=1.0.0"></script>
vendor: 1 bytes, line 2275
2275
2276<script id="storefront-header-cart-js" src="https://wpfactory.com/wp-content/themes/storefront/assets/js/woocommerce/header-cart.min.js?ver=4.6.2"></script>
vendor: 1 bytes, line 2276
2276
2277<script id="storefront-handheld-footer-bar-js" src="https://wpfactory.com/wp-content/themes/storefront/assets/js/footer.min.js?ver=4.6.2"></script>
vendor: 1 bytes, line 2277
2277
2278<script id="storefront-woocommerce-brands-js" src="https://wpfactory.com/wp-content/themes/storefront/assets/js/woocommerce/extensions/brands.min.js?ver=4.6.2"></script>
vendor: 1 bytes, line 2278
2278
2279<script>window.advads_admin_bar_items = [];</script>
2279<script>!function(){window.advanced_ads_ready_queue=window.advanced_ads_ready_queue||[],advanced_ads_ready_queue.push=window.advanced_ads_ready;for(var d=0,a=advanced_ads_ready_queue.length;d<a;d++)advanced_ads_ready(advanced_ads_ready_queue[d])}();</script>
2279<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"94183548dc554c24932c6228242c7311","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 2279
2279
2280<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a442dba9cce5dfb0',t:'MTc5MDkzNTIwNQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
2280</body> 2281</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.