[{"data":1,"prerenderedAt":6941},["ShallowReactive",2],{"\u002Fdocs\u002Fwordpress-setup\u002Fplugins":3,"docs-nav":1374},{"id":4,"title":5,"body":6,"description":1364,"extension":1365,"links":1366,"meta":1367,"navigation":1368,"path":1370,"seo":1371,"stem":1372,"__hash__":1373},"docs\u002F2.wordpress-setup\u002F3.plugins.md","Plugin Setup",{"type":7,"value":8,"toc":1332},"minimark",[9,13,68,73,78,117,121,124,137,141,144,190,194,197,341,345,351,374,380,384,387,391,485,489,492,528,535,539,542,562,566,569,604,608,615,767,771,774,797,801,820,834,838,841,845,851,856,860,863,871,876,894,899,913,916,919,925,949,954,968,971,974,980,985,996,999,1002,1005,1011,1016,1030,1036,1039,1042,1048,1053,1067,1072,1086,1093,1096,1099,1104,1107,1112,1144,1154,1157,1160,1165,1190,1193,1196,1199,1212,1217,1220,1223,1309,1313,1316,1328],[10,11,12],"p",{},"The WooNuxt Settings plugin is the cornerstone of your WooNuxt setup. It automatically installs dependencies and provides a central configuration hub for your headless WooCommerce store.",[14,15,24,25],"div",{"className":16},[17,18,19,20,21,22,23],"flex","items-center","justify-center","gap-4","mb-8","md:justify-start","not-prose","\n  ",[26,27,42,43,42,60,24],"a",{"href":28,"download":29,"className":30},"https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt-settings\u002Freleases\u002Flatest\u002Fdownload\u002Fwoonuxt-settings.zip",true,[17,18,31,32,33,34,35,36,37,38,39,40,41],"gap-6","p-4","transition-shadow","duration-200","ease-in-out","bg-white","border","border-gray-300","border-dashed","rounded-lg","hover:shadow-md","\n    ",[14,44,48,49,48,55,42],{"className":45},[17,46,47],"flex-col","flex-1","\n      ",[50,51,54],"span",{"className":52},[53],"font-semibold","WooNuxt setup plugin",[50,56,59],{"className":57},[58],"text-xs","woonuxt-settings.zip",[61,62],"img",{"className":63,"width":65,"height":65,"src":66,"alt":67},[64],"mr-2",36,"\u002Flogo.svg","Logo",[69,70,72],"h2",{"id":71},"installation-steps","Installation Steps",[74,75,77],"h3",{"id":76},"upload-to-wordpress","Upload to WordPress",[79,80,81,89,96,106,111],"ol",{},[82,83,84,85],"li",{},"In WordPress admin, navigate to ",[86,87,88],"strong",{},"Plugins > Add New",[82,90,91,92,95],{},"Click the ",[86,93,94],{},"Upload Plugin"," button at the top",[82,97,98,99,102,103],{},"Click ",[86,100,101],{},"Choose File"," and select ",[104,105,59],"code",{},[82,107,98,108],{},[86,109,110],{},"Install Now",[82,112,98,113,116],{},[86,114,115],{},"Activate"," once installation completes",[74,118,120],{"id":119},"access-settings","Access Settings",[10,122,123],{},"After activation, find the settings page:",[125,126,127,134],"ul",{},[82,128,129,130,133],{},"Go to ",[86,131,132],{},"Settings > WooNuxt"," in WordPress admin",[82,135,136],{},"You'll see a comprehensive dashboard with multiple sections",[69,138,140],{"id":139},"what-the-plugin-does","What the Plugin Does",[10,142,143],{},"The WooNuxt Settings plugin handles the heavy lifting of WordPress configuration for your headless WooCommerce store.",[145,146,147,155,162,169,176,183],"card-group",{},[148,149,152],"card",{"icon":150,"title":151},"i-lucide-download","Auto-Install Dependencies",[10,153,154],{},"Automatically downloads and activates WPGraphQL, WooGraphQL, and Headless Login plugins",[148,156,159],{"icon":157,"title":158},"i-lucide-settings-2","GraphQL Configuration",[10,160,161],{},"Exposes all WooCommerce and WooNuxt settings via GraphQL API",[148,163,166],{"icon":164,"title":165},"i-lucide-credit-card","Payment Integration",[10,167,168],{},"Handles Stripe payment intent creation and exposes payment settings",[148,170,173],{"icon":171,"title":172},"i-lucide-filter","Product Filtering",[10,174,175],{},"Manages global product attributes for advanced filtering capabilities",[148,177,180],{"icon":178,"title":179},"i-lucide-palette","Brand Customization",[10,181,182],{},"Configure logo, primary colors, and visual branding",[148,184,187],{"icon":185,"title":186},"i-lucide-zap","Deployment Hooks",[10,188,189],{},"Trigger Netlify\u002FVercel builds directly from WordPress",[69,191,193],{"id":192},"required-dependencies","Required Dependencies",[10,195,196],{},"The plugin will automatically install these dependencies for you:",[198,199,200,259,300],"code-group",{},[201,202,208],"pre",{"className":203,"code":204,"filename":205,"language":206,"meta":207,"style":207},"language-yaml shiki shiki-themes material-theme-palenight","Name: WPGraphQL\nPurpose: GraphQL API for WordPress\nDescription: Provides GraphQL endpoint at \u002Fgraphql\nAuto-installed: ✅ Yes\n","WPGraphQL 2.12.0+","yaml","",[104,209,210,226,237,248],{"__ignoreMap":207},[50,211,214,218,222],{"class":212,"line":213},"line",1,[50,215,217],{"class":216},"s-wAU","Name",[50,219,221],{"class":220},"sAklC",":",[50,223,225],{"class":224},"sfyAc"," WPGraphQL\n",[50,227,229,232,234],{"class":212,"line":228},2,[50,230,231],{"class":216},"Purpose",[50,233,221],{"class":220},[50,235,236],{"class":224}," GraphQL API for WordPress\n",[50,238,240,243,245],{"class":212,"line":239},3,[50,241,242],{"class":216},"Description",[50,244,221],{"class":220},[50,246,247],{"class":224}," Provides GraphQL endpoint at \u002Fgraphql\n",[50,249,251,254,256],{"class":212,"line":250},4,[50,252,253],{"class":216},"Auto-installed",[50,255,221],{"class":220},[50,257,258],{"class":224}," ✅ Yes\n",[201,260,263],{"className":203,"code":261,"filename":262,"language":206,"meta":207,"style":207},"Name: WPGraphQL WooCommerce (WooGraphQL)\nPurpose: WooCommerce GraphQL integration\nDescription: Exposes WooCommerce data via GraphQL\nAuto-installed: ✅ Yes\n","WooGraphQL 1.0.2+",[104,264,265,274,283,292],{"__ignoreMap":207},[50,266,267,269,271],{"class":212,"line":213},[50,268,217],{"class":216},[50,270,221],{"class":220},[50,272,273],{"class":224}," WPGraphQL WooCommerce (WooGraphQL)\n",[50,275,276,278,280],{"class":212,"line":228},[50,277,231],{"class":216},[50,279,221],{"class":220},[50,281,282],{"class":224}," WooCommerce GraphQL integration\n",[50,284,285,287,289],{"class":212,"line":239},[50,286,242],{"class":216},[50,288,221],{"class":220},[50,290,291],{"class":224}," Exposes WooCommerce data via GraphQL\n",[50,293,294,296,298],{"class":212,"line":250},[50,295,253],{"class":216},[50,297,221],{"class":220},[50,299,258],{"class":224},[201,301,304],{"className":203,"code":302,"filename":303,"language":206,"meta":207,"style":207},"Name: WPGraphQL Headless Login\nPurpose: Headless authentication\nDescription: Enables login\u002Flogout via GraphQL mutations\nAuto-installed: ✅ Yes\n","Headless Login 0.4.4+",[104,305,306,315,324,333],{"__ignoreMap":207},[50,307,308,310,312],{"class":212,"line":213},[50,309,217],{"class":216},[50,311,221],{"class":220},[50,313,314],{"class":224}," WPGraphQL Headless Login\n",[50,316,317,319,321],{"class":212,"line":228},[50,318,231],{"class":216},[50,320,221],{"class":220},[50,322,323],{"class":224}," Headless authentication\n",[50,325,326,328,330],{"class":212,"line":239},[50,327,242],{"class":216},[50,329,221],{"class":220},[50,331,332],{"class":224}," Enables login\u002Flogout via GraphQL mutations\n",[50,334,335,337,339],{"class":212,"line":250},[50,336,253],{"class":216},[50,338,221],{"class":220},[50,340,258],{"class":224},[74,342,344],{"id":343},"auto-installation-process","Auto-Installation Process",[10,346,347,348,350],{},"When you visit ",[86,349,132],{}," for the first time:",[79,352,353,356,363,368,371],{},[82,354,355],{},"The plugin checks for required dependencies",[82,357,358,359,362],{},"Shows ",[86,360,361],{},"\"Required Plugins\""," section with install buttons",[82,364,98,365,367],{},[86,366,110],{}," for each plugin",[82,369,370],{},"Plugins are downloaded, installed, and activated automatically",[82,372,373],{},"Once all plugins are installed, the section changes to deployment options",[375,376,377],"note",{},[10,378,379],{},"The plugin uses secure AJAX requests with nonce verification to handle installations. Each plugin status is checked in real-time via jQuery.",[69,381,383],{"id":382},"plugin-settings-overview","Plugin Settings Overview",[10,385,386],{},"Once installed, the WooNuxt Settings plugin provides these configuration options:",[74,388,390],{"id":389},"global-settings","Global Settings",[392,393,394,409],"table",{},[395,396,397],"thead",{},[398,399,400,404,406],"tr",{},[401,402,403],"th",{},"Setting",[401,405,242],{},[401,407,408],{},"GraphQL Field",[410,411,412,427,442,457,472],"tbody",{},[398,413,414,419,422],{},[415,416,417],"td",{},[86,418,67],{},[415,420,421],{},"Your site logo URL",[415,423,424],{},[104,425,426],{},"logo",[398,428,429,434,437],{},[415,430,431],{},[86,432,433],{},"Frontend URL",[415,435,436],{},"Your Nuxt site URL (not WordPress)",[415,438,439],{},[104,440,441],{},"frontEndUrl",[398,443,444,449,452],{},[415,445,446],{},[86,447,448],{},"Products Per Page",[415,450,451],{},"Pagination limit (default: 24)",[415,453,454],{},[104,455,456],{},"productsPerPage",[398,458,459,464,467],{},[415,460,461],{},[86,462,463],{},"Primary Color",[415,465,466],{},"Brand color in hex format",[415,468,469],{},[104,470,471],{},"primary_color",[398,473,474,479,482],{},[415,475,476],{},[86,477,478],{},"Build Hook",[415,480,481],{},"Netlify\u002FVercel deployment webhook",[415,483,484],{},"-",[74,486,488],{"id":487},"global-attributes","Global Attributes",[10,490,491],{},"Configure product attributes for filtering:",[125,493,494,500,510,516,522],{},[82,495,496,499],{},[86,497,498],{},"Custom Label"," - Display name for the filter",[82,501,502,505,506,509],{},[86,503,504],{},"Attribute"," - WooCommerce attribute taxonomy (e.g., ",[104,507,508],{},"pa_color",")",[82,511,512,515],{},[86,513,514],{},"Show Count"," - Display product count per term",[82,517,518,521],{},[86,519,520],{},"Hide Empty"," - Hide attributes with no products",[82,523,524,527],{},[86,525,526],{},"Open By Default"," - Expand filter by default",[10,529,530,531,534],{},"These settings are exposed via GraphQL as ",[104,532,533],{},"global_attributes"," array.",[74,536,538],{"id":537},"seo-settings","SEO Settings",[10,540,541],{},"Add social media handles:",[125,543,544,550,556],{},[82,545,546,549],{},[86,547,548],{},"Provider"," - Social platform (Facebook, Twitter, Instagram, etc.)",[82,551,552,555],{},[86,553,554],{},"Handle"," - Your username\u002Fhandle",[82,557,558,561],{},[86,559,560],{},"URL"," - Full profile URL",[74,563,565],{"id":564},"stripe-configuration","Stripe Configuration",[10,567,568],{},"Stripe settings are automatically exposed via GraphQL:",[125,570,571,577],{},[82,572,573,574],{},"Reads from ",[86,575,576],{},"WooCommerce > Settings > Payments > Stripe",[82,578,579,580,583,584],{},"Exposes ",[104,581,582],{},"stripeSettings"," with:\n",[125,585,586,592,598],{},[82,587,588,591],{},[104,589,590],{},"enabled"," - Whether Stripe is active",[82,593,594,597],{},[104,595,596],{},"testmode"," - Test or live mode",[82,599,600,603],{},[104,601,602],{},"publishable_key"," - Public key based on environment",[69,605,607],{"id":606},"graphql-schema","GraphQL Schema",[10,609,610,611,614],{},"After installation, the plugin adds ",[104,612,613],{},"woonuxtSettings"," to your GraphQL schema:",[201,616,620],{"className":617,"code":618,"language":619,"meta":207,"style":207},"language-graphql shiki shiki-themes material-theme-palenight","query getWooNuxtSettings {\n  woonuxtSettings {\n    primary_color\n    logo\n    publicIntrospectionEnabled\n    frontEndUrl\n    domain\n    maxPrice\n    productsPerPage\n    wooCommerceSettingsVersion\n    global_attributes {\n      slug\n      showCount\n      openByDefault\n      label\n      hideEmpty\n    }\n    stripeSettings {\n      enabled\n      testmode\n      test_publishable_key\n      publishable_key\n    }\n  }\n}\n","graphql",[104,621,622,627,632,637,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,755,761],{"__ignoreMap":207},[50,623,624],{"class":212,"line":213},[50,625,626],{},"query getWooNuxtSettings {\n",[50,628,629],{"class":212,"line":228},[50,630,631],{},"  woonuxtSettings {\n",[50,633,634],{"class":212,"line":239},[50,635,636],{},"    primary_color\n",[50,638,639],{"class":212,"line":250},[50,640,641],{},"    logo\n",[50,643,645],{"class":212,"line":644},5,[50,646,647],{},"    publicIntrospectionEnabled\n",[50,649,651],{"class":212,"line":650},6,[50,652,653],{},"    frontEndUrl\n",[50,655,657],{"class":212,"line":656},7,[50,658,659],{},"    domain\n",[50,661,663],{"class":212,"line":662},8,[50,664,665],{},"    maxPrice\n",[50,667,669],{"class":212,"line":668},9,[50,670,671],{},"    productsPerPage\n",[50,673,675],{"class":212,"line":674},10,[50,676,677],{},"    wooCommerceSettingsVersion\n",[50,679,681],{"class":212,"line":680},11,[50,682,683],{},"    global_attributes {\n",[50,685,687],{"class":212,"line":686},12,[50,688,689],{},"      slug\n",[50,691,693],{"class":212,"line":692},13,[50,694,695],{},"      showCount\n",[50,697,699],{"class":212,"line":698},14,[50,700,701],{},"      openByDefault\n",[50,703,705],{"class":212,"line":704},15,[50,706,707],{},"      label\n",[50,709,711],{"class":212,"line":710},16,[50,712,713],{},"      hideEmpty\n",[50,715,717],{"class":212,"line":716},17,[50,718,719],{},"    }\n",[50,721,723],{"class":212,"line":722},18,[50,724,725],{},"    stripeSettings {\n",[50,727,729],{"class":212,"line":728},19,[50,730,731],{},"      enabled\n",[50,733,735],{"class":212,"line":734},20,[50,736,737],{},"      testmode\n",[50,739,741],{"class":212,"line":740},21,[50,742,743],{},"      test_publishable_key\n",[50,745,747],{"class":212,"line":746},22,[50,748,749],{},"      publishable_key\n",[50,751,753],{"class":212,"line":752},23,[50,754,719],{},[50,756,758],{"class":212,"line":757},24,[50,759,760],{},"  }\n",[50,762,764],{"class":212,"line":763},25,[50,765,766],{},"}\n",[69,768,770],{"id":769},"verification","Verification",[10,772,773],{},"After installation, verify everything is working:",[775,776,777],"checklist",{},[125,778,779,782,785,791,794],{},[82,780,781],{},"WooNuxt Settings plugin is activated",[82,783,784],{},"All required plugins show as \"Installed\" in Settings > WooNuxt",[82,786,787,788],{},"GraphQL endpoint is accessible at ",[104,789,790],{},"\u002Fgraphql",[82,792,793],{},"WPGraphQL shows in WordPress admin sidebar",[82,795,796],{},"WooCommerce products are visible in GraphQL IDE",[69,798,800],{"id":799},"common-issues","Common Issues",[10,802,803,806,807,813,814,819],{},[86,804,805],{},"Plugin auto-installation fails?"," Ensure WordPress is 6.9.4+ and you have admin access. Manual installation: download from ",[26,808,812],{"href":809,"rel":810},"https:\u002F\u002Fwordpress.org\u002Fplugins\u002F",[811],"nofollow","WordPress.org"," and ",[26,815,818],{"href":816,"rel":817},"https:\u002F\u002Fgithub.com\u002Fwp-graphql\u002Fwp-graphql-woocommerce\u002Freleases",[811],"GitHub releases",".",[10,821,822,825,826,829,830,833],{},[86,823,824],{},"GraphQL endpoint not accessible?"," Go to ",[86,827,828],{},"Settings > Permalinks"," and click ",[86,831,832],{},"Save Changes"," to flush rewrite rules.",[69,835,837],{"id":836},"plugin-configuration","Plugin Configuration",[10,839,840],{},"After installing the WooNuxt Settings plugin, configure it to connect your WordPress backend with your Nuxt frontend.",[74,842,844],{"id":843},"accessing-settings","Accessing Settings",[10,846,847,848,850],{},"Navigate to ",[86,849,132],{}," in your WordPress admin dashboard.",[375,852,853],{},[10,854,855],{},"You'll see different sections based on whether all required plugins are installed. If dependencies are missing, you'll see the \"Required Plugins\" section first.",[74,857,859],{"id":858},"logo-configuration","Logo Configuration",[10,861,862],{},"Upload or specify your site logo:",[201,864,869],{"className":865,"code":867,"language":868},[866],"language-text","Logo URL: https:\u002F\u002Fyoursite.com\u002Fwp-content\u002Fuploads\u002Flogo.svg\n","text",[104,870,867],{"__ignoreMap":207},[10,872,873],{},[86,874,875],{},"How to set:",[79,877,878,884,887,890],{},[82,879,880,881],{},"Upload logo to ",[86,882,883],{},"Media Library",[82,885,886],{},"Copy the file URL",[82,888,889],{},"Paste into the Logo field",[82,891,98,892],{},[86,893,832],{},[10,895,896],{},[86,897,898],{},"Best practices:",[125,900,901,904,907,910],{},[82,902,903],{},"Use SVG format for best quality",[82,905,906],{},"Recommended size: 200x50px to 400x100px",[82,908,909],{},"Transparent background works best",[82,911,912],{},"Logo appears in your Nuxt frontend header",[74,914,433],{"id":915},"frontend-url",[10,917,918],{},"Specify your Nuxt application URL (not your WordPress URL):",[201,920,923],{"className":921,"code":922,"language":868},[866],"Frontend URL: https:\u002F\u002Fyour-store.netlify.app\n",[104,924,922],{"__ignoreMap":207},[926,927,928,935],"warning",{},[10,929,930,931,934],{},"This should be your ",[86,932,933],{},"Nuxt site URL",", not your WordPress backend URL. Example:",[125,936,937,943],{},[82,938,939,940],{},"✅ Correct: ",[104,941,942],{},"https:\u002F\u002Fmystore.netlify.app",[82,944,945,946],{},"❌ Wrong: ",[104,947,948],{},"https:\u002F\u002Fwordpress.mystore.com",[10,950,951],{},[86,952,953],{},"Use cases:",[125,955,956,959,962,965],{},[82,957,958],{},"Links in emails point to frontend",[82,960,961],{},"Redirects after login\u002Flogout",[82,963,964],{},"CORS configuration",[82,966,967],{},"Social sharing links",[74,969,448],{"id":970},"products-per-page",[10,972,973],{},"Set pagination limit for product listings:",[201,975,978],{"className":976,"code":977,"language":868},[866],"Products Per Page: 24 (default)\n",[104,979,977],{"__ignoreMap":207},[10,981,982],{},[86,983,984],{},"Common values:",[125,986,987,990,993],{},[82,988,989],{},"12 - Fewer products, faster loading",[82,991,992],{},"24 - Balanced (default)",[82,994,995],{},"48 - More products per page",[10,997,998],{},"This value is exposed via GraphQL and used by your Nuxt frontend for pagination.",[74,1000,463],{"id":1001},"primary-color",[10,1003,1004],{},"Define your brand's primary color:",[201,1006,1009],{"className":1007,"code":1008,"language":868},[866],"Primary Color: #7F54B2 (default)\n",[104,1010,1008],{"__ignoreMap":207},[10,1012,1013],{},[86,1014,1015],{},"Features:",[125,1017,1018,1021,1024,1027],{},[82,1019,1020],{},"Color picker interface",[82,1022,1023],{},"Live preview of frontend elements",[82,1025,1026],{},"Hex color code input",[82,1028,1029],{},"Affects buttons, links, and interactive elements",[10,1031,1032,1033,1035],{},"The color is exposed via GraphQL as ",[104,1034,471],{}," for your Nuxt theme.",[74,1037,478],{"id":1038},"build-hook",[10,1040,1041],{},"Trigger deployments from WordPress:",[201,1043,1046],{"className":1044,"code":1045,"language":868},[866],"Build Hook: https:\u002F\u002Fapi.netlify.com\u002Fbuild_hooks\u002Fyour_unique_id\n",[104,1047,1045],{"__ignoreMap":207},[10,1049,1050],{},[86,1051,1052],{},"Where to find:",[79,1054,1055,1061],{},[82,1056,1057,1060],{},[86,1058,1059],{},"Netlify",": Site Settings > Build & Deploy > Build Hooks",[82,1062,1063,1066],{},[86,1064,1065],{},"Vercel",": Project Settings > Git > Deploy Hooks",[10,1068,1069],{},[86,1070,1071],{},"When to use:",[125,1073,1074,1077,1080,1083],{},[82,1075,1076],{},"After publishing new products",[82,1078,1079],{},"After updating content",[82,1081,1082],{},"After changing settings",[82,1084,1085],{},"Automatic deployments on save",[10,1087,1088,1089,1092],{},"Once configured, a ",[86,1090,1091],{},"Deploy"," button appears in the WooNuxt toolbar.",[74,1094,488],{"id":1095},"global-attributes-1",[10,1097,1098],{},"Global Attributes enable advanced product filtering on your frontend.",[10,1100,1101],{},[86,1102,1103],{},"What Are Global Attributes?",[10,1105,1106],{},"Product attributes in WooCommerce (like Color, Size, Material) that you want to use as filters across all product pages.",[10,1108,1109],{},[86,1110,1111],{},"Adding a Filter:",[79,1113,1114,1120,1123,1126,1140],{},[82,1115,98,1116,1119],{},[86,1117,1118],{},"Add New"," button",[82,1121,1122],{},"Enter a custom label (e.g., \"Filter by Color\")",[82,1124,1125],{},"Select the attribute from dropdown (e.g., Color)",[82,1127,1128,1129],{},"Configure display options:\n",[125,1130,1131,1134,1137],{},[82,1132,1133],{},"☑️ Show Count - Display number of products",[82,1135,1136],{},"☑️ Hide Empty - Hide terms with 0 products",[82,1138,1139],{},"☑️ Open By Default - Start expanded",[82,1141,98,1142],{},[86,1143,832],{},[1145,1146,1147],"tip",{},[10,1148,1149,1150,1153],{},"Create product attributes first in ",[86,1151,1152],{},"Products > Attributes"," before configuring global attributes in WooNuxt Settings.",[74,1155,538],{"id":1156},"seo-settings-1",[10,1158,1159],{},"Configure social media profiles for rich meta tags:",[10,1161,1162],{},[86,1163,1164],{},"Adding Social Profiles:",[79,1166,1167,1172,1175,1178,1186],{},[82,1168,98,1169,1119],{},[86,1170,1171],{},"Add new",[82,1173,1174],{},"Enter provider name (e.g., \"facebook\", \"twitter\", \"instagram\")",[82,1176,1177],{},"Add your handle (e.g., \"@yourstore\")",[82,1179,1180,1181,1185],{},"Add full profile URL (e.g., \"",[26,1182,1183],{"href":1183,"rel":1184},"https:\u002F\u002Ffacebook.com\u002Fyourstore",[811],"\")",[82,1187,98,1188],{},[86,1189,832],{},[10,1191,1192],{},"These settings populate Open Graph and Twitter Card meta tags on your frontend for better social sharing.",[74,1194,565],{"id":1195},"stripe-configuration-1",[10,1197,1198],{},"Stripe settings are automatically pulled from WooCommerce:",[79,1200,1201,1206,1209],{},[82,1202,1203,1204],{},"Configure Stripe in ",[86,1205,576],{},[82,1207,1208],{},"WooNuxt Settings automatically exposes these via GraphQL",[82,1210,1211],{},"Your Nuxt frontend reads the appropriate key based on environment",[375,1213,1214],{},[10,1215,1216],{},"The plugin intelligently returns test or live keys based on your WooCommerce Stripe mode setting.",[69,1218,770],{"id":1219},"verification-1",[10,1221,1222],{},"After configuring settings, verify in GraphQL IDE:",[201,1224,1226],{"className":617,"code":1225,"language":619,"meta":207,"style":207},"query TestSettings {\n  woonuxtSettings {\n    logo\n    primary_color\n    frontEndUrl\n    productsPerPage\n    global_attributes {\n      label\n      slug\n      showCount\n      hideEmpty\n      openByDefault\n    }\n    stripeSettings {\n      enabled\n      testmode\n      publishable_key\n    }\n  }\n}\n",[104,1227,1228,1233,1237,1241,1245,1249,1253,1257,1261,1265,1269,1273,1277,1281,1285,1289,1293,1297,1301,1305],{"__ignoreMap":207},[50,1229,1230],{"class":212,"line":213},[50,1231,1232],{},"query TestSettings {\n",[50,1234,1235],{"class":212,"line":228},[50,1236,631],{},[50,1238,1239],{"class":212,"line":239},[50,1240,641],{},[50,1242,1243],{"class":212,"line":250},[50,1244,636],{},[50,1246,1247],{"class":212,"line":644},[50,1248,653],{},[50,1250,1251],{"class":212,"line":650},[50,1252,671],{},[50,1254,1255],{"class":212,"line":656},[50,1256,683],{},[50,1258,1259],{"class":212,"line":662},[50,1260,707],{},[50,1262,1263],{"class":212,"line":668},[50,1264,689],{},[50,1266,1267],{"class":212,"line":674},[50,1268,695],{},[50,1270,1271],{"class":212,"line":680},[50,1272,713],{},[50,1274,1275],{"class":212,"line":686},[50,1276,701],{},[50,1278,1279],{"class":212,"line":692},[50,1280,719],{},[50,1282,1283],{"class":212,"line":698},[50,1284,725],{},[50,1286,1287],{"class":212,"line":704},[50,1288,731],{},[50,1290,1291],{"class":212,"line":710},[50,1292,737],{},[50,1294,1295],{"class":212,"line":716},[50,1296,749],{},[50,1298,1299],{"class":212,"line":722},[50,1300,719],{},[50,1302,1303],{"class":212,"line":728},[50,1304,760],{},[50,1306,1307],{"class":212,"line":734},[50,1308,766],{},[69,1310,1312],{"id":1311},"whats-next","What's Next",[10,1314,1315],{},"With WordPress fully configured, you're ready to start building with WooNuxt!",[1317,1318,1319],"success",{},[10,1320,1321,1322,1327],{},"Your WordPress backend is now configured and ready to power your headless WooCommerce store. Check out the ",[26,1323,1326],{"href":1324,"rel":1325},"https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt",[811],"WooNuxt GitHub repository"," to get started with the frontend.",[1329,1330,1331],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s-wAU, html code.shiki .s-wAU{--shiki-default:#F07178}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}",{"title":207,"searchDepth":228,"depth":228,"links":1333},[1334,1338,1339,1342,1348,1349,1350,1351,1362,1363],{"id":71,"depth":228,"text":72,"children":1335},[1336,1337],{"id":76,"depth":239,"text":77},{"id":119,"depth":239,"text":120},{"id":139,"depth":228,"text":140},{"id":192,"depth":228,"text":193,"children":1340},[1341],{"id":343,"depth":239,"text":344},{"id":382,"depth":228,"text":383,"children":1343},[1344,1345,1346,1347],{"id":389,"depth":239,"text":390},{"id":487,"depth":239,"text":488},{"id":537,"depth":239,"text":538},{"id":564,"depth":239,"text":565},{"id":606,"depth":228,"text":607},{"id":769,"depth":228,"text":770},{"id":799,"depth":228,"text":800},{"id":836,"depth":228,"text":837,"children":1352},[1353,1354,1355,1356,1357,1358,1359,1360,1361],{"id":843,"depth":239,"text":844},{"id":858,"depth":239,"text":859},{"id":915,"depth":239,"text":433},{"id":970,"depth":239,"text":448},{"id":1001,"depth":239,"text":463},{"id":1038,"depth":239,"text":478},{"id":1095,"depth":239,"text":488},{"id":1156,"depth":239,"text":538},{"id":1195,"depth":239,"text":565},{"id":1219,"depth":228,"text":770},{"id":1311,"depth":228,"text":1312},"Install and configure WooNuxt Settings plugin","md",null,{},{"icon":1369},"i-lucide-plug","\u002Fwordpress-setup\u002Fplugins",{"title":5,"description":1364},"2.wordpress-setup\u002F3.plugins","c1gThVqcKW9rBW7VG4rq8dgTOdt0k8yi_xQhzSeG9a4",[1375,1721,2506,3006,3833,4015,4128,5079,5430,6483],{"id":1376,"title":1377,"body":1378,"description":1713,"extension":1365,"links":1366,"meta":1714,"navigation":1715,"path":1717,"seo":1718,"stem":1719,"__hash__":1720},"docs\u002F1.getting-started\u002F1.index.md","Introduction",{"type":7,"value":1379,"toc":1706},[1380,1387,1391,1394,1426,1430,1433,1495,1499,1506,1512,1515,1529,1533,1536,1661,1668,1672,1703],[10,1381,1382,1383,1386],{},"WooNuxt is the ",[86,1384,1385],{},"Next Generation Front-End for WooCommerce",". A modern, headless eCommerce solution that combines the power of WooCommerce with the performance of Nuxt.js. Build blazing-fast, SEO-friendly online stores with complete control over your frontend while leveraging WooCommerce's robust backend.",[69,1388,1390],{"id":1389},"what-is-woonuxt","What is WooNuxt?",[10,1392,1393],{},"WooNuxt provides a complete eCommerce frontend built with:",[125,1395,1396,1402,1408,1414,1420],{},[82,1397,1398,1401],{},[86,1399,1400],{},"Nuxt.js 4"," - The latest version of the Vue.js framework",[82,1403,1404,1407],{},[86,1405,1406],{},"WooCommerce"," - Industry-standard eCommerce platform",[82,1409,1410,1413],{},[86,1411,1412],{},"GraphQL"," - Efficient data fetching via WPGraphQL & WooGraphQL",[82,1415,1416,1419],{},[86,1417,1418],{},"Tailwind CSS"," - Utility-first styling framework",[82,1421,1422,1425],{},[86,1423,1424],{},"Vue 3"," - Reactive, component-based architecture",[69,1427,1429],{"id":1428},"key-features","Key Features",[10,1431,1432],{},"WooNuxt comes with everything you need to build a modern online store:",[125,1434,1435,1441,1447,1453,1459,1465,1471,1477,1483,1489],{},[82,1436,1437,1440],{},[86,1438,1439],{},"🚀 Lightning Fast",": Server-side rendering and optimized performance",[82,1442,1443,1446],{},[86,1444,1445],{},"🛒 Complete Cart & Checkout",": Full shopping experience with secure payments",[82,1448,1449,1452],{},[86,1450,1451],{},"🔐 User Authentication",": Customer accounts with JWT-based auth",[82,1454,1455,1458],{},[86,1456,1457],{},"💳 Stripe Integration",": Built-in payment processing",[82,1460,1461,1464],{},[86,1462,1463],{},"🔍 Advanced Filtering",": Dynamic product filters and search",[82,1466,1467,1470],{},[86,1468,1469],{},"📱 Responsive Design",": Mobile-first, works on all devices",[82,1472,1473,1476],{},[86,1474,1475],{},"🎨 Fully Customizable",": Built with Nuxt Layers for easy overrides",[82,1478,1479,1482],{},[86,1480,1481],{},"♿ Accessible",": WCAG compliant components",[82,1484,1485,1488],{},[86,1486,1487],{},"🌍 i18n Ready",": Multi-language support included",[82,1490,1491,1494],{},[86,1492,1493],{},"🖼️ Image Optimization",": Automatic image optimization with Nuxt Image",[69,1496,1498],{"id":1497},"architecture","Architecture",[10,1500,1501,1502,1505],{},"WooNuxt uses a ",[86,1503,1504],{},"Nuxt Layers"," architecture - similar to WordPress parent\u002Fchild themes:",[201,1507,1510],{"className":1508,"code":1509,"language":868},[866],"\nwoonuxt\u002F\n├── woonuxt_base\u002F # Core functionality (parent)\n└── app\u002F # Your customizations (child)\n\n",[104,1511,1509],{"__ignoreMap":207},[10,1513,1514],{},"This means:",[125,1516,1517,1520,1523,1526],{},[82,1518,1519],{},"✅ Easy updates to core without losing customizations",[82,1521,1522],{},"✅ Override any component, page, or composable",[82,1524,1525],{},"✅ Clean separation of concerns",[82,1527,1528],{},"✅ Full control over your implementation",[69,1530,1532],{"id":1531},"quick-start","Quick Start",[10,1534,1535],{},"Get started in minutes:",[201,1537,1541],{"className":1538,"code":1539,"language":1540,"meta":207,"style":207},"language-bash shiki shiki-themes material-theme-palenight","# Clone the repository\ngit clone https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt.git\ncd woonuxt\n\n# Install dependencies\nnpm install\n# or: yarn install\n# or: pnpm install\n\n# Create environment file\ncp .env.example .env\n\n# Edit .env with your WordPress URL\n# GQL_HOST=https:\u002F\u002Fyoursite.com\u002Fgraphql\n\n# Start development server\nnpm run dev\n# or: yarn dev\n# or: pnpm dev\n","bash",[104,1542,1543,1549,1561,1570,1575,1580,1588,1593,1598,1602,1607,1618,1622,1627,1632,1636,1641,1651,1656],{"__ignoreMap":207},[50,1544,1545],{"class":212,"line":213},[50,1546,1548],{"class":1547},"saEQR","# Clone the repository\n",[50,1550,1551,1555,1558],{"class":212,"line":228},[50,1552,1554],{"class":1553},"s5Dmg","git",[50,1556,1557],{"class":224}," clone",[50,1559,1560],{"class":224}," https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt.git\n",[50,1562,1563,1567],{"class":212,"line":239},[50,1564,1566],{"class":1565},"sdLwU","cd",[50,1568,1569],{"class":224}," woonuxt\n",[50,1571,1572],{"class":212,"line":250},[50,1573,1574],{"emptyLinePlaceholder":29},"\n",[50,1576,1577],{"class":212,"line":644},[50,1578,1579],{"class":1547},"# Install dependencies\n",[50,1581,1582,1585],{"class":212,"line":650},[50,1583,1584],{"class":1553},"npm",[50,1586,1587],{"class":224}," install\n",[50,1589,1590],{"class":212,"line":656},[50,1591,1592],{"class":1547},"# or: yarn install\n",[50,1594,1595],{"class":212,"line":662},[50,1596,1597],{"class":1547},"# or: pnpm install\n",[50,1599,1600],{"class":212,"line":668},[50,1601,1574],{"emptyLinePlaceholder":29},[50,1603,1604],{"class":212,"line":674},[50,1605,1606],{"class":1547},"# Create environment file\n",[50,1608,1609,1612,1615],{"class":212,"line":680},[50,1610,1611],{"class":1553},"cp",[50,1613,1614],{"class":224}," .env.example",[50,1616,1617],{"class":224}," .env\n",[50,1619,1620],{"class":212,"line":686},[50,1621,1574],{"emptyLinePlaceholder":29},[50,1623,1624],{"class":212,"line":692},[50,1625,1626],{"class":1547},"# Edit .env with your WordPress URL\n",[50,1628,1629],{"class":212,"line":698},[50,1630,1631],{"class":1547},"# GQL_HOST=https:\u002F\u002Fyoursite.com\u002Fgraphql\n",[50,1633,1634],{"class":212,"line":704},[50,1635,1574],{"emptyLinePlaceholder":29},[50,1637,1638],{"class":212,"line":710},[50,1639,1640],{"class":1547},"# Start development server\n",[50,1642,1643,1645,1648],{"class":212,"line":716},[50,1644,1584],{"class":1553},[50,1646,1647],{"class":224}," run",[50,1649,1650],{"class":224}," dev\n",[50,1652,1653],{"class":212,"line":722},[50,1654,1655],{"class":1547},"# or: yarn dev\n",[50,1657,1658],{"class":212,"line":728},[50,1659,1660],{"class":1547},"# or: pnpm dev\n",[10,1662,1663,1664,1667],{},"Your store will be running at ",[104,1665,1666],{},"http:\u002F\u002Flocalhost:3000"," 🎉",[69,1669,1671],{"id":1670},"next-steps","Next Steps",[145,1673,1674,1681,1689,1696],{},[148,1675,1678],{"icon":150,"title":1676,"to":1677},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation",[10,1679,1680],{},"Step-by-step installation guide",[148,1682,1686],{"icon":1683,"title":1684,"to":1685},"i-lucide-server","WordPress Setup","\u002Fdocs\u002Fwordpress-setup",[10,1687,1688],{},"Configure your WordPress backend",[148,1690,1693],{"icon":1691,"title":1532,"to":1692},"i-lucide-code","\u002Fdocs\u002Fgetting-started\u002Fquick-start",[10,1694,1695],{},"Get up and running quickly",[148,1697,1700],{"icon":1698,"title":5,"to":1699},"i-lucide-sliders","\u002Fdocs\u002Fwordpress-setup\u002Fplugins",[10,1701,1702],{},"Install and configure WooNuxt Settings",[1329,1704,1705],{},"html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":207,"searchDepth":228,"depth":228,"links":1707},[1708,1709,1710,1711,1712],{"id":1389,"depth":228,"text":1390},{"id":1428,"depth":228,"text":1429},{"id":1497,"depth":228,"text":1498},{"id":1531,"depth":228,"text":1532},{"id":1670,"depth":228,"text":1671},"Welcome to WooNuxt - Modern headless eCommerce with WooCommerce and Nuxt.js",{},{"icon":1716},"i-lucide-house","\u002Fgetting-started",{"title":1377,"description":1713},"1.getting-started\u002F1.index","SN5RIBfETaeRkCglu_xAcCOAAp9lgpbb36XRRtpc9ng",{"id":1722,"title":1676,"body":1723,"description":2499,"extension":1365,"links":1366,"meta":2500,"navigation":2501,"path":2502,"seo":2503,"stem":2504,"__hash__":2505},"docs\u002F1.getting-started\u002F2.installation.md",{"type":7,"value":1724,"toc":2483},[1725,1728,1732,1735,1755,1759,1762,1810,1813,1817,1820,1833,1840,1956,2061,2065,2072,2090,2098,2107,2111,2114,2159,2162,2168,2173,2177,2180,2184,2245,2277,2281,2294,2304,2308,2320,2324,2370,2377,2395,2399,2402,2436,2438,2450,2462,2464,2480],[10,1726,1727],{},"This guide will walk you through installing WooNuxt and getting your first headless eCommerce store running.",[69,1729,1731],{"id":1730},"step-1-clone-repository","Step 1: Clone Repository",[10,1733,1734],{},"Clone the WooNuxt repository to your local machine:",[201,1736,1739],{"className":1538,"code":1737,"filename":1738,"language":1540,"meta":207,"style":207},"git clone https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt.git\ncd woonuxt\n","Terminal",[104,1740,1741,1749],{"__ignoreMap":207},[50,1742,1743,1745,1747],{"class":212,"line":213},[50,1744,1554],{"class":1553},[50,1746,1557],{"class":224},[50,1748,1560],{"class":224},[50,1750,1751,1753],{"class":212,"line":228},[50,1752,1566],{"class":1565},[50,1754,1569],{"class":224},[69,1756,1758],{"id":1757},"step-2-install-dependencies","Step 2: Install Dependencies",[10,1760,1761],{},"Install the required Node.js packages:",[201,1763,1765],{"className":1538,"code":1764,"filename":1738,"language":1540,"meta":207,"style":207},"# Using npm\nnpm install\n\n# Or using yarn\nyarn install\n\n# Or using pnpm\npnpm install\n",[104,1766,1767,1772,1778,1782,1787,1794,1798,1803],{"__ignoreMap":207},[50,1768,1769],{"class":212,"line":213},[50,1770,1771],{"class":1547},"# Using npm\n",[50,1773,1774,1776],{"class":212,"line":228},[50,1775,1584],{"class":1553},[50,1777,1587],{"class":224},[50,1779,1780],{"class":212,"line":239},[50,1781,1574],{"emptyLinePlaceholder":29},[50,1783,1784],{"class":212,"line":250},[50,1785,1786],{"class":1547},"# Or using yarn\n",[50,1788,1789,1792],{"class":212,"line":644},[50,1790,1791],{"class":1553},"yarn",[50,1793,1587],{"class":224},[50,1795,1796],{"class":212,"line":650},[50,1797,1574],{"emptyLinePlaceholder":29},[50,1799,1800],{"class":212,"line":656},[50,1801,1802],{"class":1547},"# Or using pnpm\n",[50,1804,1805,1808],{"class":212,"line":662},[50,1806,1807],{"class":1553},"pnpm",[50,1809,1587],{"class":224},[10,1811,1812],{},"This will install all dependencies including Nuxt.js, Vue, and other required packages.",[69,1814,1816],{"id":1815},"step-3-environment-configuration","Step 3: Environment Configuration",[10,1818,1819],{},"Create your environment configuration file:",[201,1821,1823],{"className":1538,"code":1822,"filename":1738,"language":1540,"meta":207,"style":207},"cp .env.example .env\n",[104,1824,1825],{"__ignoreMap":207},[50,1826,1827,1829,1831],{"class":212,"line":213},[50,1828,1611],{"class":1553},[50,1830,1614],{"class":224},[50,1832,1617],{"class":224},[10,1834,1835,1836,1839],{},"Edit the ",[104,1837,1838],{},".env"," file with your WordPress site details:",[201,1841,1845],{"className":1842,"code":1843,"filename":1838,"language":1844,"meta":207,"style":207},"language-env shiki shiki-themes material-theme-palenight","# ─── Required ────────────────────────────────────────────────\n# WordPress GraphQL endpoint\nGQL_HOST=https:\u002F\u002Fyoursite.com\u002Fgraphql\n\n# Comma-separated list of image domains for @nuxt\u002Fimage optimization\nNUXT_IMAGE_DOMAINS=yoursite.com,cdn.yoursite.com\n\n# ─── Optional ────────────────────────────────────────────────\n# Origin header sent with GraphQL requests (defaults to http:\u002F\u002Flocalhost:3000)\nAPP_HOST=http:\u002F\u002Flocalhost:3000\n\n# ISR cache lifetime in seconds for product\u002Fcategory pages (default: 3600)\n# Increase for large catalogs (10 000+ products) to reduce build times\nCATALOG_ISR_TTL=3600\n\n# Override products per page set in WooNuxt Settings plugin\nNUXT_PUBLIC_PRODUCTS_PER_PAGE=24\n\n# Stripe publishable key (overrides value fetched from WordPress)\nNUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...\n\n# Override brand primary color (hex, overrides WooNuxt Settings plugin value)\nPRIMARY_COLOR=#7F54B2\n","env",[104,1846,1847,1852,1857,1862,1866,1871,1876,1880,1885,1890,1895,1899,1904,1909,1914,1918,1923,1928,1932,1937,1942,1946,1951],{"__ignoreMap":207},[50,1848,1849],{"class":212,"line":213},[50,1850,1851],{},"# ─── Required ────────────────────────────────────────────────\n",[50,1853,1854],{"class":212,"line":228},[50,1855,1856],{},"# WordPress GraphQL endpoint\n",[50,1858,1859],{"class":212,"line":239},[50,1860,1861],{},"GQL_HOST=https:\u002F\u002Fyoursite.com\u002Fgraphql\n",[50,1863,1864],{"class":212,"line":250},[50,1865,1574],{"emptyLinePlaceholder":29},[50,1867,1868],{"class":212,"line":644},[50,1869,1870],{},"# Comma-separated list of image domains for @nuxt\u002Fimage optimization\n",[50,1872,1873],{"class":212,"line":650},[50,1874,1875],{},"NUXT_IMAGE_DOMAINS=yoursite.com,cdn.yoursite.com\n",[50,1877,1878],{"class":212,"line":656},[50,1879,1574],{"emptyLinePlaceholder":29},[50,1881,1882],{"class":212,"line":662},[50,1883,1884],{},"# ─── Optional ────────────────────────────────────────────────\n",[50,1886,1887],{"class":212,"line":668},[50,1888,1889],{},"# Origin header sent with GraphQL requests (defaults to http:\u002F\u002Flocalhost:3000)\n",[50,1891,1892],{"class":212,"line":674},[50,1893,1894],{},"APP_HOST=http:\u002F\u002Flocalhost:3000\n",[50,1896,1897],{"class":212,"line":680},[50,1898,1574],{"emptyLinePlaceholder":29},[50,1900,1901],{"class":212,"line":686},[50,1902,1903],{},"# ISR cache lifetime in seconds for product\u002Fcategory pages (default: 3600)\n",[50,1905,1906],{"class":212,"line":692},[50,1907,1908],{},"# Increase for large catalogs (10 000+ products) to reduce build times\n",[50,1910,1911],{"class":212,"line":698},[50,1912,1913],{},"CATALOG_ISR_TTL=3600\n",[50,1915,1916],{"class":212,"line":704},[50,1917,1574],{"emptyLinePlaceholder":29},[50,1919,1920],{"class":212,"line":710},[50,1921,1922],{},"# Override products per page set in WooNuxt Settings plugin\n",[50,1924,1925],{"class":212,"line":716},[50,1926,1927],{},"NUXT_PUBLIC_PRODUCTS_PER_PAGE=24\n",[50,1929,1930],{"class":212,"line":722},[50,1931,1574],{"emptyLinePlaceholder":29},[50,1933,1934],{"class":212,"line":728},[50,1935,1936],{},"# Stripe publishable key (overrides value fetched from WordPress)\n",[50,1938,1939],{"class":212,"line":734},[50,1940,1941],{},"NUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...\n",[50,1943,1944],{"class":212,"line":740},[50,1945,1574],{"emptyLinePlaceholder":29},[50,1947,1948],{"class":212,"line":746},[50,1949,1950],{},"# Override brand primary color (hex, overrides WooNuxt Settings plugin value)\n",[50,1952,1953],{"class":212,"line":752},[50,1954,1955],{},"PRIMARY_COLOR=#7F54B2\n",[392,1957,1958,1970],{},[395,1959,1960],{},[398,1961,1962,1965,1968],{},[401,1963,1964],{},"Variable",[401,1966,1967],{},"Required",[401,1969,242],{},[410,1971,1972,1985,1997,2010,2025,2037,2049],{},[398,1973,1974,1979,1982],{},[415,1975,1976],{},[104,1977,1978],{},"GQL_HOST",[415,1980,1981],{},"✅",[415,1983,1984],{},"WordPress GraphQL endpoint",[398,1986,1987,1992,1994],{},[415,1988,1989],{},[104,1990,1991],{},"NUXT_IMAGE_DOMAINS",[415,1993,1981],{},[415,1995,1996],{},"Allowed image domains for optimization",[398,1998,1999,2004,2007],{},[415,2000,2001],{},[104,2002,2003],{},"APP_HOST",[415,2005,2006],{},"—",[415,2008,2009],{},"Origin header for GraphQL requests",[398,2011,2012,2017,2019],{},[415,2013,2014],{},[104,2015,2016],{},"CATALOG_ISR_TTL",[415,2018,2006],{},[415,2020,2021,2022,509],{},"ISR cache TTL in seconds (default ",[104,2023,2024],{},"3600",[398,2026,2027,2032,2034],{},[415,2028,2029],{},[104,2030,2031],{},"NUXT_PUBLIC_PRODUCTS_PER_PAGE",[415,2033,2006],{},[415,2035,2036],{},"Overrides plugin setting",[398,2038,2039,2044,2046],{},[415,2040,2041],{},[104,2042,2043],{},"NUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY",[415,2045,2006],{},[415,2047,2048],{},"Overrides Stripe key from plugin",[398,2050,2051,2056,2058],{},[415,2052,2053],{},[104,2054,2055],{},"PRIMARY_COLOR",[415,2057,2006],{},[415,2059,2060],{},"Overrides brand color from plugin",[69,2062,2064],{"id":2063},"step-4-wordpress-setup","Step 4: WordPress Setup",[10,2066,2067,2068,2071],{},"Before starting the frontend, you need to configure WordPress. Download and install the ",[86,2069,2070],{},"WooNuxt Settings Plugin"," which will automatically install and configure:",[125,2073,2074,2079,2084],{},[82,2075,2076,2078],{},[86,2077,205],{}," - GraphQL API for WordPress",[82,2080,2081,2083],{},[86,2082,262],{}," - WooCommerce integration for GraphQL",[82,2085,2086,2089],{},[86,2087,2088],{},"WPGraphQL Headless Login 0.4.4+"," - Authentication for headless sites",[10,2091,2092],{},[86,2093,2094],{},[26,2095,2097],{"href":28,"rel":2096},[811],"Download woonuxt-settings.zip",[1145,2099,2100],{},[10,2101,2102,2103,2106],{},"See the ",[26,2104,2105],{"href":1685},"WordPress Setup Guide"," for complete installation instructions.",[69,2108,2110],{"id":2109},"step-5-start-development-server","Step 5: Start Development Server",[10,2112,2113],{},"Once WordPress is configured, start your WooNuxt development server:",[201,2115,2117],{"className":1538,"code":2116,"filename":1738,"language":1540,"meta":207,"style":207},"# Using npm\nnpm run dev\n\n# Or using yarn\nyarn dev\n\n# Or using pnpm\npnpm dev\n",[104,2118,2119,2123,2131,2135,2139,2145,2149,2153],{"__ignoreMap":207},[50,2120,2121],{"class":212,"line":213},[50,2122,1771],{"class":1547},[50,2124,2125,2127,2129],{"class":212,"line":228},[50,2126,1584],{"class":1553},[50,2128,1647],{"class":224},[50,2130,1650],{"class":224},[50,2132,2133],{"class":212,"line":239},[50,2134,1574],{"emptyLinePlaceholder":29},[50,2136,2137],{"class":212,"line":250},[50,2138,1786],{"class":1547},[50,2140,2141,2143],{"class":212,"line":644},[50,2142,1791],{"class":1553},[50,2144,1650],{"class":224},[50,2146,2147],{"class":212,"line":650},[50,2148,1574],{"emptyLinePlaceholder":29},[50,2150,2151],{"class":212,"line":656},[50,2152,1802],{"class":1547},[50,2154,2155,2157],{"class":212,"line":662},[50,2156,1807],{"class":1553},[50,2158,1650],{"class":224},[10,2160,2161],{},"Your store should now be running at:",[201,2163,2166],{"className":2164,"code":2165,"language":868},[866],"http:\u002F\u002Flocalhost:3000\n",[104,2167,2165],{"__ignoreMap":207},[1317,2169,2170],{},[10,2171,2172],{},"🎉 Congratulations! Your WooNuxt store is now running.",[69,2174,2176],{"id":2175},"optional-ssl-for-local-development","Optional: SSL for Local Development",[10,2178,2179],{},"If you need HTTPS for local development (for testing payment gateways, PWA features, or third-party integrations):",[74,2181,2183],{"id":2182},"install-mkcert","Install mkcert",[201,2185,2188],{"className":1538,"code":2186,"filename":2187,"language":1540,"meta":207,"style":207},"# macOS (Homebrew)\nbrew install mkcert\n\n# Linux\nsudo apt install mkcert   # Debian\u002FUbuntu\nsudo yum install mkcert    # Fedora\u002FRHEL\n","macOS\u002FLinux",[104,2189,2190,2195,2206,2210,2215,2231],{"__ignoreMap":207},[50,2191,2192],{"class":212,"line":213},[50,2193,2194],{"class":1547},"# macOS (Homebrew)\n",[50,2196,2197,2200,2203],{"class":212,"line":228},[50,2198,2199],{"class":1553},"brew",[50,2201,2202],{"class":224}," install",[50,2204,2205],{"class":224}," mkcert\n",[50,2207,2208],{"class":212,"line":239},[50,2209,1574],{"emptyLinePlaceholder":29},[50,2211,2212],{"class":212,"line":250},[50,2213,2214],{"class":1547},"# Linux\n",[50,2216,2217,2220,2223,2225,2228],{"class":212,"line":644},[50,2218,2219],{"class":1553},"sudo",[50,2221,2222],{"class":224}," apt",[50,2224,2202],{"class":224},[50,2226,2227],{"class":224}," mkcert",[50,2229,2230],{"class":1547},"   # Debian\u002FUbuntu\n",[50,2232,2233,2235,2238,2240,2242],{"class":212,"line":650},[50,2234,2219],{"class":1553},[50,2236,2237],{"class":224}," yum",[50,2239,2202],{"class":224},[50,2241,2227],{"class":224},[50,2243,2244],{"class":1547},"    # Fedora\u002FRHEL\n",[201,2246,2251],{"className":2247,"code":2248,"filename":2249,"language":2250,"meta":207,"style":207},"language-powershell shiki shiki-themes material-theme-palenight","# Using Chocolatey\nchoco install mkcert\n\n# Or using Scoop\nscoop install mkcert\n","Windows","powershell",[104,2252,2253,2258,2263,2267,2272],{"__ignoreMap":207},[50,2254,2255],{"class":212,"line":213},[50,2256,2257],{},"# Using Chocolatey\n",[50,2259,2260],{"class":212,"line":228},[50,2261,2262],{},"choco install mkcert\n",[50,2264,2265],{"class":212,"line":239},[50,2266,1574],{"emptyLinePlaceholder":29},[50,2268,2269],{"class":212,"line":250},[50,2270,2271],{},"# Or using Scoop\n",[50,2273,2274],{"class":212,"line":644},[50,2275,2276],{},"scoop install mkcert\n",[74,2278,2280],{"id":2279},"generate-certificate","Generate Certificate",[201,2282,2284],{"className":1538,"code":2283,"filename":1738,"language":1540,"meta":207,"style":207},"mkcert localhost\n",[104,2285,2286],{"__ignoreMap":207},[50,2287,2288,2291],{"class":212,"line":213},[50,2289,2290],{"class":1553},"mkcert",[50,2292,2293],{"class":224}," localhost\n",[10,2295,2296,2297,813,2300,2303],{},"This creates ",[104,2298,2299],{},"localhost.pem",[104,2301,2302],{},"localhost-key.pem"," files in your current directory.",[74,2305,2307],{"id":2306},"install-certificate-authority","Install Certificate Authority",[201,2309,2311],{"className":1538,"code":2310,"filename":1738,"language":1540,"meta":207,"style":207},"mkcert -install\n",[104,2312,2313],{"__ignoreMap":207},[50,2314,2315,2317],{"class":212,"line":213},[50,2316,2290],{"class":1553},[50,2318,2319],{"class":224}," -install\n",[74,2321,2323],{"id":2322},"start-with-ssl","Start with SSL",[201,2325,2327],{"className":1538,"code":2326,"filename":1738,"language":1540,"meta":207,"style":207},"# Using npm\nnpm run dev:ssl\n\n# Or using yarn\nyarn dev:ssl\n\n# Or using pnpm\npnpm dev:ssl\n",[104,2328,2329,2333,2342,2346,2350,2356,2360,2364],{"__ignoreMap":207},[50,2330,2331],{"class":212,"line":213},[50,2332,1771],{"class":1547},[50,2334,2335,2337,2339],{"class":212,"line":228},[50,2336,1584],{"class":1553},[50,2338,1647],{"class":224},[50,2340,2341],{"class":224}," dev:ssl\n",[50,2343,2344],{"class":212,"line":239},[50,2345,1574],{"emptyLinePlaceholder":29},[50,2347,2348],{"class":212,"line":250},[50,2349,1786],{"class":1547},[50,2351,2352,2354],{"class":212,"line":644},[50,2353,1791],{"class":1553},[50,2355,2341],{"class":224},[50,2357,2358],{"class":212,"line":650},[50,2359,1574],{"emptyLinePlaceholder":29},[50,2361,2362],{"class":212,"line":656},[50,2363,1802],{"class":1547},[50,2365,2366,2368],{"class":212,"line":662},[50,2367,1807],{"class":1553},[50,2369,2341],{"class":224},[10,2371,2372,2373,2376],{},"Your store will now be available at ",[104,2374,2375],{},"https:\u002F\u002Flocalhost:3000"," with a valid SSL certificate.",[1145,2378,2379],{},[10,2380,2381,2382,2385,2386,2389,2390,2394],{},"The ",[104,2383,2384],{},"dev:ssl"," script must be configured in your ",[104,2387,2388],{},"package.json",". Check the ",[26,2391,2393],{"href":1324,"rel":2392},[811],"WooNuxt repository"," for the latest configuration.",[69,2396,2398],{"id":2397},"verify-installation","Verify Installation",[10,2400,2401],{},"Check that everything is working:",[79,2403,2404,2412,2418,2424,2430],{},[82,2405,2406,2409,2410],{},[86,2407,2408],{},"Homepage loads"," - Navigate to ",[104,2411,1666],{},[82,2413,2414,2417],{},[86,2415,2416],{},"Products display"," - Products from WooCommerce appear",[82,2419,2420,2423],{},[86,2421,2422],{},"No errors"," - Check browser console (F12) for errors",[82,2425,2426,2429],{},[86,2427,2428],{},"Images load"," - Product images display correctly",[82,2431,2432,2435],{},[86,2433,2434],{},"Navigation works"," - Menu and links function properly",[69,2437,800],{"id":799},[10,2439,2440,2443,2444,2446,2447,2449],{},[86,2441,2442],{},"GraphQL connection errors?"," Verify your ",[104,2445,1978],{}," in ",[104,2448,1838],{}," matches your WordPress GraphQL endpoint and ensure the WooNuxt Settings plugin is installed.",[10,2451,2452,2455,2456,2461],{},[86,2453,2454],{},"Need help?"," Visit ",[26,2457,2460],{"href":2458,"rel":2459},"https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt\u002Fissues",[811],"GitHub Issues"," for support.",[69,2463,1671],{"id":1670},[145,2465,2466,2471,2476],{},[148,2467,2468],{"icon":1683,"title":1684,"to":1685},[10,2469,2470],{},"Configure your WordPress backend with required plugins",[148,2472,2473],{"icon":185,"title":1532,"to":1692},[10,2474,2475],{},"Get your store running in minutes",[148,2477,2478],{"icon":1369,"title":5,"to":1699},[10,2479,1702],{},[1329,2481,2482],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}",{"title":207,"searchDepth":228,"depth":228,"links":2484},[2485,2486,2487,2488,2489,2490,2496,2497,2498],{"id":1730,"depth":228,"text":1731},{"id":1757,"depth":228,"text":1758},{"id":1815,"depth":228,"text":1816},{"id":2063,"depth":228,"text":2064},{"id":2109,"depth":228,"text":2110},{"id":2175,"depth":228,"text":2176,"children":2491},[2492,2493,2494,2495],{"id":2182,"depth":239,"text":2183},{"id":2279,"depth":239,"text":2280},{"id":2306,"depth":239,"text":2307},{"id":2322,"depth":239,"text":2323},{"id":2397,"depth":228,"text":2398},{"id":799,"depth":228,"text":800},{"id":1670,"depth":228,"text":1671},"Step-by-step guide to installing WooNuxt",{},{"icon":150},"\u002Fgetting-started\u002Finstallation",{"title":1676,"description":2499},"1.getting-started\u002F2.installation","X3bIq_deJosp8ZoaEAjpkrkL8FsI8s52IBlYCVsLJ5I",{"id":2507,"title":2508,"body":2509,"description":2999,"extension":1365,"links":1366,"meta":3000,"navigation":3001,"path":3002,"seo":3003,"stem":3004,"__hash__":3005},"docs\u002F1.getting-started\u002F3.quick-start.md","Quick Start Guide",{"type":7,"value":2510,"toc":2988},[2511,2514,2518,2521,2540,2544,2547,2576,2579,2588,2592,2598,2625,2630,2646,2650,2653,2663,2736,2741,2745,2807,2812,2845,2849,2893,2899,2903,2906,2934,2936,2942,2951,2959,2968,2971,2974,2985],[10,2512,2513],{},"Follow these steps to get WooNuxt running quickly. This is the condensed version - see detailed sections for more information.",[69,2515,2517],{"id":2516},"step-1-prerequisites-checklist","Step 1: Prerequisites Checklist",[10,2519,2520],{},"Make sure you have everything ready:",[775,2522,2523],{},[125,2524,2525,2528,2531,2534,2537],{},[82,2526,2527],{},"WordPress 6.9.4+ with WooCommerce 10.7.0+",[82,2529,2530],{},"At least one product published",[82,2532,2533],{},"At least one product attribute configured (this is a prerequisite of WooGraphQL)",[82,2535,2536],{},"Permalinks set to \"Post name\"",[82,2538,2539],{},"Node.js 20+ installed locally",[69,2541,2543],{"id":2542},"step-2-install-woonuxt-settings-plugin","Step 2: Install WooNuxt Settings Plugin",[10,2545,2546],{},"This plugin is essential - it installs all dependencies automatically:",[79,2548,2549,2557,2563,2566,2570,2573],{},[82,2550,2551,2552],{},"Download from ",[26,2553,2556],{"href":2554,"rel":2555},"https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt-settings\u002Freleases\u002Flatest",[811],"GitHub Releases",[82,2558,2559,2560],{},"Upload to ",[86,2561,2562],{},"Plugins > Add New > Upload Plugin",[82,2564,2565],{},"Activate the plugin",[82,2567,129,2568],{},[86,2569,132],{},[82,2571,2572],{},"Click \"Install Now\" for each required plugin",[82,2574,2575],{},"Wait for all plugins to show \"✅ Installed\"",[10,2577,2578],{},"Required plugins that will be installed:",[125,2580,2581,2583,2585],{},[82,2582,205],{},[82,2584,262],{},[82,2586,2587],{},"Headless Login for WPGraphQL 0.4.4+",[69,2589,2591],{"id":2590},"step-3-configure-woonuxt-settings","Step 3: Configure WooNuxt Settings",[10,2593,2594,2595,2597],{},"In ",[86,2596,132],{},", configure these key settings:",[125,2599,2600,2606,2611,2620],{},[82,2601,2602,2605],{},[86,2603,2604],{},"Logo URL"," - Upload a logo to Media Library and paste the URL",[82,2607,2608,2610],{},[86,2609,463],{}," - Set your brand color (default: #7F54B2)",[82,2612,2613,2616,2617,2619],{},[86,2614,2615],{},"Front End URL"," - Set to ",[104,2618,1666],{}," for development",[82,2621,2622,2624],{},[86,2623,448],{}," - Set to 24 (or your preference)",[10,2626,2627,2629],{},[86,2628,488],{}," - Add at least one product attribute for filtering:",[79,2631,2632,2637,2640,2643],{},[82,2633,98,2634,2636],{},[86,2635,1118],{}," under Global Attributes",[82,2638,2639],{},"Select an attribute (Color, Size, etc.)",[82,2641,2642],{},"Configure display options",[82,2644,2645],{},"Save changes",[69,2647,2649],{"id":2648},"step-4-test-wordpress-graphql","Step 4: Test WordPress GraphQL",[10,2651,2652],{},"Verify your setup works:",[79,2654,2655,2660],{},[82,2656,129,2657],{},[86,2658,2659],{},"GraphQL > GraphiQL IDE",[82,2661,2662],{},"Run this test query:",[201,2664,2666],{"className":617,"code":2665,"language":619,"meta":207,"style":207},"query TestSetup {\n  products(first: 5) {\n    nodes {\n      id\n      name\n      ... on SimpleProduct {\n        price\n      }\n    }\n  }\n  woonuxtSettings {\n    primary_color\n    logo\n  }\n}\n",[104,2667,2668,2673,2678,2683,2688,2693,2698,2703,2708,2712,2716,2720,2724,2728,2732],{"__ignoreMap":207},[50,2669,2670],{"class":212,"line":213},[50,2671,2672],{},"query TestSetup {\n",[50,2674,2675],{"class":212,"line":228},[50,2676,2677],{},"  products(first: 5) {\n",[50,2679,2680],{"class":212,"line":239},[50,2681,2682],{},"    nodes {\n",[50,2684,2685],{"class":212,"line":250},[50,2686,2687],{},"      id\n",[50,2689,2690],{"class":212,"line":644},[50,2691,2692],{},"      name\n",[50,2694,2695],{"class":212,"line":650},[50,2696,2697],{},"      ... on SimpleProduct {\n",[50,2699,2700],{"class":212,"line":656},[50,2701,2702],{},"        price\n",[50,2704,2705],{"class":212,"line":662},[50,2706,2707],{},"      }\n",[50,2709,2710],{"class":212,"line":668},[50,2711,719],{},[50,2713,2714],{"class":212,"line":674},[50,2715,760],{},[50,2717,2718],{"class":212,"line":680},[50,2719,631],{},[50,2721,2722],{"class":212,"line":686},[50,2723,636],{},[50,2725,2726],{"class":212,"line":692},[50,2727,641],{},[50,2729,2730],{"class":212,"line":698},[50,2731,760],{},[50,2733,2734],{"class":212,"line":704},[50,2735,766],{},[1317,2737,2738],{},[10,2739,2740],{},"If you see products and settings, WordPress is configured correctly! ✅",[69,2742,2744],{"id":2743},"step-5-clone-configure-frontend","Step 5: Clone & Configure Frontend",[201,2746,2748],{"className":1538,"code":2747,"filename":1738,"language":1540,"meta":207,"style":207},"# Clone repository\ngit clone https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt.git\ncd woonuxt\n\n# Install dependencies\nnpm install\n# or: yarn install\n# or: pnpm install\n\n# Create environment file\ncp .env.example .env\n",[104,2749,2750,2755,2763,2769,2773,2777,2783,2787,2791,2795,2799],{"__ignoreMap":207},[50,2751,2752],{"class":212,"line":213},[50,2753,2754],{"class":1547},"# Clone repository\n",[50,2756,2757,2759,2761],{"class":212,"line":228},[50,2758,1554],{"class":1553},[50,2760,1557],{"class":224},[50,2762,1560],{"class":224},[50,2764,2765,2767],{"class":212,"line":239},[50,2766,1566],{"class":1565},[50,2768,1569],{"class":224},[50,2770,2771],{"class":212,"line":250},[50,2772,1574],{"emptyLinePlaceholder":29},[50,2774,2775],{"class":212,"line":644},[50,2776,1579],{"class":1547},[50,2778,2779,2781],{"class":212,"line":650},[50,2780,1584],{"class":1553},[50,2782,1587],{"class":224},[50,2784,2785],{"class":212,"line":656},[50,2786,1592],{"class":1547},[50,2788,2789],{"class":212,"line":662},[50,2790,1597],{"class":1547},[50,2792,2793],{"class":212,"line":668},[50,2794,1574],{"emptyLinePlaceholder":29},[50,2796,2797],{"class":212,"line":674},[50,2798,1606],{"class":1547},[50,2800,2801,2803,2805],{"class":212,"line":680},[50,2802,1611],{"class":1553},[50,2804,1614],{"class":224},[50,2806,1617],{"class":224},[10,2808,2809,2810,221],{},"Edit ",[104,2811,1838],{},[201,2813,2815],{"className":1538,"code":2814,"filename":1838,"language":1540,"meta":207,"style":207},"GQL_HOST=https:\u002F\u002Fyoursite.com\u002Fgraphql\nAPP_HOST=http:\u002F\u002Flocalhost:3000\nNUXT_IMAGE_DOMAINS=yoursite.com\n",[104,2816,2817,2828,2836],{"__ignoreMap":207},[50,2818,2819,2822,2825],{"class":212,"line":213},[50,2820,1978],{"class":2821},"s0W1g",[50,2823,2824],{"class":220},"=",[50,2826,2827],{"class":224},"https:\u002F\u002Fyoursite.com\u002Fgraphql\n",[50,2829,2830,2832,2834],{"class":212,"line":228},[50,2831,2003],{"class":2821},[50,2833,2824],{"class":220},[50,2835,2165],{"class":224},[50,2837,2838,2840,2842],{"class":212,"line":239},[50,2839,1991],{"class":2821},[50,2841,2824],{"class":220},[50,2843,2844],{"class":224},"yoursite.com\n",[69,2846,2848],{"id":2847},"step-6-start-development-server","Step 6: Start Development Server",[201,2850,2851],{"className":1538,"code":2116,"filename":1738,"language":1540,"meta":207,"style":207},[104,2852,2853,2857,2865,2869,2873,2879,2883,2887],{"__ignoreMap":207},[50,2854,2855],{"class":212,"line":213},[50,2856,1771],{"class":1547},[50,2858,2859,2861,2863],{"class":212,"line":228},[50,2860,1584],{"class":1553},[50,2862,1647],{"class":224},[50,2864,1650],{"class":224},[50,2866,2867],{"class":212,"line":239},[50,2868,1574],{"emptyLinePlaceholder":29},[50,2870,2871],{"class":212,"line":250},[50,2872,1786],{"class":1547},[50,2874,2875,2877],{"class":212,"line":644},[50,2876,1791],{"class":1553},[50,2878,1650],{"class":224},[50,2880,2881],{"class":212,"line":650},[50,2882,1574],{"emptyLinePlaceholder":29},[50,2884,2885],{"class":212,"line":656},[50,2886,1802],{"class":1547},[50,2888,2889,2891],{"class":212,"line":662},[50,2890,1807],{"class":1553},[50,2892,1650],{"class":224},[10,2894,2895,2896,2898],{},"Open ",[104,2897,1666],{}," in your browser.",[69,2900,2902],{"id":2901},"step-7-verify-everything-works","Step 7: Verify Everything Works",[10,2904,2905],{},"Test these features:",[775,2907,2908],{},[125,2909,2910,2913,2916,2919,2922,2925,2928,2931],{},[82,2911,2912],{},"Homepage loads with products",[82,2914,2915],{},"Product images display",[82,2917,2918],{},"Click on a product to view details",[82,2920,2921],{},"Add product to cart",[82,2923,2924],{},"Cart drawer opens",[82,2926,2927],{},"Filters appear (if attributes configured)",[82,2929,2930],{},"Search works",[82,2932,2933],{},"No console errors (F12 to check)",[69,2935,800],{"id":799},[10,2937,2938,2941],{},[86,2939,2940],{},"No products showing?"," Ensure products are published in WooCommerce and the WooNuxt Settings plugin is configured.",[10,2943,2944,2947,2948,819],{},[86,2945,2946],{},"Filters not working?"," Add product attributes in WooCommerce and configure them in ",[86,2949,2950],{},"Settings > WooNuxt > Global Attributes",[10,2952,2953,2956,2957,221],{},[86,2954,2955],{},"Images not loading?"," Add your WordPress domain to ",[104,2958,1838],{},[201,2960,2962],{"className":1842,"code":2961,"language":1844,"meta":207,"style":207},"NUXT_IMAGE_DOMAINS=yoursite.com\n",[104,2963,2964],{"__ignoreMap":207},[50,2965,2966],{"class":212,"line":213},[50,2967,2961],{},[69,2969,2970],{"id":1311},"What's Next?",[10,2972,2973],{},"Now that you're running, customize your store:",[145,2975,2976,2980],{},[148,2977,2978],{"icon":1683,"title":1684,"to":1685},[10,2979,1688],{},[148,2981,2983],{"icon":2982,"title":5,"to":1699},"i-lucide-settings",[10,2984,1702],{},[1329,2986,2987],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html pre.shiki code .s0W1g, html code.shiki .s0W1g{--shiki-default:#BABED8}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}",{"title":207,"searchDepth":228,"depth":228,"links":2989},[2990,2991,2992,2993,2994,2995,2996,2997,2998],{"id":2516,"depth":228,"text":2517},{"id":2542,"depth":228,"text":2543},{"id":2590,"depth":228,"text":2591},{"id":2648,"depth":228,"text":2649},{"id":2743,"depth":228,"text":2744},{"id":2847,"depth":228,"text":2848},{"id":2901,"depth":228,"text":2902},{"id":799,"depth":228,"text":800},{"id":1311,"depth":228,"text":2970},"Get your WooNuxt store up and running in minutes",{},{"icon":185},"\u002Fgetting-started\u002Fquick-start",{"title":2508,"description":2999},"1.getting-started\u002F3.quick-start","swHE3iLj3qRGWZi4db-WhaniMQCOq9mp8DgnXcqAkJo",{"id":3007,"title":3008,"body":3009,"description":3825,"extension":1365,"links":1366,"meta":3826,"navigation":3827,"path":3829,"seo":3830,"stem":3831,"__hash__":3832},"docs\u002F1.getting-started\u002F4.customization.md","Customization & Architecture",{"type":7,"value":3010,"toc":3814},[3011,3017,3021,3024,3030,3037,3099,3105,3109,3120,3171,3174,3178,3354,3358,3361,3393,3397,3404,3480,3484,3498,3518,3522,3532,3760,3764,3771,3799,3811],[10,3012,3013,3014,3016],{},"WooNuxt uses ",[86,3015,1504],{}," to separate core functionality from your customizations. This means you can override any component, page, composable, or style without touching the base layer — and safely pull in upstream updates without losing your changes.",[69,3018,3020],{"id":3019},"how-it-works","How It Works",[10,3022,3023],{},"The project has two layers:",[201,3025,3028],{"className":3026,"code":3027,"language":868},[866],"woonuxt\u002F                    ← Your project (customize here)\n├── app\u002F\n│   └── types\u002F             ← Type overrides\n├── nuxt.config.ts         ← Extends woonuxt_base\n└── ...\n\nwoonuxt_base\u002F              ← Core layer (do not edit directly)\n├── app\u002F\n│   ├── components\u002F        ← All default components\n│   ├── composables\u002F       ← All composables\n│   ├── pages\u002F             ← All pages\n│   ├── queries\u002F           ← All GraphQL queries\n│   └── assets\u002Fcss\u002F        ← Base styles\n└── nuxt.config.ts         ← Core Nuxt config\n",[104,3029,3027],{"__ignoreMap":207},[10,3031,3032,3033,3036],{},"Your root ",[104,3034,3035],{},"nuxt.config.ts"," extends the base:",[201,3038,3042],{"className":3039,"code":3040,"filename":3035,"language":3041,"meta":207,"style":207},"language-ts shiki shiki-themes material-theme-palenight","export default defineNuxtConfig({\n  extends: ['.\u002Fwoonuxt_base'],\n  \u002F\u002F your overrides here\n})\n","ts",[104,3043,3044,3062,3086,3091],{"__ignoreMap":207},[50,3045,3046,3050,3053,3056,3059],{"class":212,"line":213},[50,3047,3049],{"class":3048},"s6cf3","export",[50,3051,3052],{"class":3048}," default",[50,3054,3055],{"class":1565}," defineNuxtConfig",[50,3057,3058],{"class":2821},"(",[50,3060,3061],{"class":220},"{\n",[50,3063,3064,3067,3069,3072,3075,3078,3080,3083],{"class":212,"line":228},[50,3065,3066],{"class":216},"  extends",[50,3068,221],{"class":220},[50,3070,3071],{"class":2821}," [",[50,3073,3074],{"class":220},"'",[50,3076,3077],{"class":224},".\u002Fwoonuxt_base",[50,3079,3074],{"class":220},[50,3081,3082],{"class":2821},"]",[50,3084,3085],{"class":220},",\n",[50,3087,3088],{"class":212,"line":239},[50,3089,3090],{"class":1547},"  \u002F\u002F your overrides here\n",[50,3092,3093,3096],{"class":212,"line":250},[50,3094,3095],{"class":220},"}",[50,3097,3098],{"class":2821},")\n",[10,3100,3101,3102,819],{},"Nuxt merges both layers at build time, with your root-level files taking priority over ",[104,3103,3104],{},"woonuxt_base",[69,3106,3108],{"id":3107},"overriding-components","Overriding Components",[10,3110,3111,3112,3115,3116,3119],{},"To override any component, create a file with the ",[86,3113,3114],{},"same name"," in your root ",[104,3117,3118],{},"app\u002Fcomponents\u002F"," folder:",[201,3121,3123],{"className":1538,"code":3122,"language":1540,"meta":207,"style":207},"# Example: override the default ProductCard\napp\u002F\n└── components\u002F\n    └── productElements\u002F\n        └── ProductCard.vue   ← your version wins\n",[104,3124,3125,3130,3135,3143,3151],{"__ignoreMap":207},[50,3126,3127],{"class":212,"line":213},[50,3128,3129],{"class":1547},"# Example: override the default ProductCard\n",[50,3131,3132],{"class":212,"line":228},[50,3133,3134],{"class":1553},"app\u002F\n",[50,3136,3137,3140],{"class":212,"line":239},[50,3138,3139],{"class":1553},"└──",[50,3141,3142],{"class":224}," components\u002F\n",[50,3144,3145,3148],{"class":212,"line":250},[50,3146,3147],{"class":1553},"    └──",[50,3149,3150],{"class":224}," productElements\u002F\n",[50,3152,3153,3156,3159,3162,3165,3168],{"class":212,"line":644},[50,3154,3155],{"class":1553},"        └──",[50,3157,3158],{"class":224}," ProductCard.vue",[50,3160,3161],{"class":224},"   ←",[50,3163,3164],{"class":224}," your",[50,3166,3167],{"class":224}," version",[50,3169,3170],{"class":224}," wins\n",[10,3172,3173],{},"You don't need to copy the original — just create a new file at the same path. The base layer version is completely replaced.",[74,3175,3177],{"id":3176},"example-custom-herobanner","Example: Custom HeroBanner",[201,3179,3184],{"className":3180,"code":3181,"filename":3182,"language":3183,"meta":207,"style":207},"language-vue shiki shiki-themes material-theme-palenight","\u003Ctemplate>\n  \u003Csection class=\"hero bg-primary text-white py-20\">\n    \u003Ch1 class=\"text-4xl font-bold\">{{ title }}\u003C\u002Fh1>\n    \u003Cp>{{ description }}\u003C\u002Fp>\n  \u003C\u002Fsection>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\ndefineProps\u003C{ title: string; description: string }>()\n\u003C\u002Fscript>\n","app\u002Fcomponents\u002FgeneralElements\u002FHeroBanner.vue","vue",[104,3185,3186,3197,3221,3253,3270,3279,3287,3291,3314,3346],{"__ignoreMap":207},[50,3187,3188,3191,3194],{"class":212,"line":213},[50,3189,3190],{"class":220},"\u003C",[50,3192,3193],{"class":216},"template",[50,3195,3196],{"class":220},">\n",[50,3198,3199,3202,3205,3209,3211,3214,3217,3219],{"class":212,"line":228},[50,3200,3201],{"class":220},"  \u003C",[50,3203,3204],{"class":216},"section",[50,3206,3208],{"class":3207},"sJ14y"," class",[50,3210,2824],{"class":220},[50,3212,3213],{"class":220},"\"",[50,3215,3216],{"class":224},"hero bg-primary text-white py-20",[50,3218,3213],{"class":220},[50,3220,3196],{"class":220},[50,3222,3223,3226,3229,3231,3233,3235,3238,3240,3243,3246,3249,3251],{"class":212,"line":239},[50,3224,3225],{"class":220},"    \u003C",[50,3227,3228],{"class":216},"h1",[50,3230,3208],{"class":3207},[50,3232,2824],{"class":220},[50,3234,3213],{"class":220},[50,3236,3237],{"class":224},"text-4xl font-bold",[50,3239,3213],{"class":220},[50,3241,3242],{"class":220},">",[50,3244,3245],{"class":2821},"{{ title }}",[50,3247,3248],{"class":220},"\u003C\u002F",[50,3250,3228],{"class":216},[50,3252,3196],{"class":220},[50,3254,3255,3257,3259,3261,3264,3266,3268],{"class":212,"line":250},[50,3256,3225],{"class":220},[50,3258,10],{"class":216},[50,3260,3242],{"class":220},[50,3262,3263],{"class":2821},"{{ description }}",[50,3265,3248],{"class":220},[50,3267,10],{"class":216},[50,3269,3196],{"class":220},[50,3271,3272,3275,3277],{"class":212,"line":644},[50,3273,3274],{"class":220},"  \u003C\u002F",[50,3276,3204],{"class":216},[50,3278,3196],{"class":220},[50,3280,3281,3283,3285],{"class":212,"line":650},[50,3282,3248],{"class":220},[50,3284,3193],{"class":216},[50,3286,3196],{"class":220},[50,3288,3289],{"class":212,"line":656},[50,3290,1574],{"emptyLinePlaceholder":29},[50,3292,3293,3295,3298,3301,3304,3306,3308,3310,3312],{"class":212,"line":662},[50,3294,3190],{"class":220},[50,3296,3297],{"class":216},"script",[50,3299,3300],{"class":3207}," setup",[50,3302,3303],{"class":3207}," lang",[50,3305,2824],{"class":220},[50,3307,3213],{"class":220},[50,3309,3041],{"class":224},[50,3311,3213],{"class":220},[50,3313,3196],{"class":220},[50,3315,3316,3319,3322,3325,3327,3330,3333,3336,3338,3340,3343],{"class":212,"line":668},[50,3317,3318],{"class":1565},"defineProps",[50,3320,3321],{"class":220},"\u003C{",[50,3323,3324],{"class":216}," title",[50,3326,221],{"class":220},[50,3328,3329],{"class":1553}," string",[50,3331,3332],{"class":220},";",[50,3334,3335],{"class":216}," description",[50,3337,221],{"class":220},[50,3339,3329],{"class":1553},[50,3341,3342],{"class":220}," }>",[50,3344,3345],{"class":2821},"()\n",[50,3347,3348,3350,3352],{"class":212,"line":674},[50,3349,3248],{"class":220},[50,3351,3297],{"class":216},[50,3353,3196],{"class":220},[69,3355,3357],{"id":3356},"overriding-pages","Overriding Pages",[10,3359,3360],{},"Same principle — create a page at the same path:",[201,3362,3364],{"className":1538,"code":3363,"language":1540,"meta":207,"style":207},"app\u002F\n└── pages\u002F\n    └── index.vue    ← replaces woonuxt_base\u002Fapp\u002Fpages\u002Findex.vue\n",[104,3365,3366,3370,3377],{"__ignoreMap":207},[50,3367,3368],{"class":212,"line":213},[50,3369,3134],{"class":1553},[50,3371,3372,3374],{"class":212,"line":228},[50,3373,3139],{"class":1553},[50,3375,3376],{"class":224}," pages\u002F\n",[50,3378,3379,3381,3384,3387,3390],{"class":212,"line":239},[50,3380,3147],{"class":1553},[50,3382,3383],{"class":224}," index.vue",[50,3385,3386],{"class":224},"    ←",[50,3388,3389],{"class":224}," replaces",[50,3391,3392],{"class":224}," woonuxt_base\u002Fapp\u002Fpages\u002Findex.vue\n",[69,3394,3396],{"id":3395},"overriding-styles","Overriding Styles",[10,3398,3399,3400,3403],{},"Add custom CSS in ",[104,3401,3402],{},"app\u002Fassets\u002Fcss\u002Fmain.css",". Tailwind CSS 4 is configured via PostCSS — extend the theme in your CSS directly:",[201,3405,3409],{"className":3406,"code":3407,"filename":3402,"language":3408,"meta":207,"style":207},"language-css shiki shiki-themes material-theme-palenight","@import \"tailwindcss\";\n\n\u002F* Extend or override Tailwind theme *\u002F\n@theme {\n  --color-primary: v-bind(primaryColor);\n}\n\n\u002F* Your custom styles *\u002F\n.my-custom-class {\n  \u002F* ... *\u002F\n}\n","css",[104,3410,3411,3427,3431,3436,3444,3449,3453,3457,3462,3471,3476],{"__ignoreMap":207},[50,3412,3413,3416,3419,3422,3424],{"class":212,"line":213},[50,3414,3415],{"class":3048},"@import",[50,3417,3418],{"class":220}," \"",[50,3420,3421],{"class":224},"tailwindcss",[50,3423,3213],{"class":220},[50,3425,3426],{"class":220},";\n",[50,3428,3429],{"class":212,"line":228},[50,3430,1574],{"emptyLinePlaceholder":29},[50,3432,3433],{"class":212,"line":239},[50,3434,3435],{"class":1547},"\u002F* Extend or override Tailwind theme *\u002F\n",[50,3437,3438,3441],{"class":212,"line":250},[50,3439,3440],{"class":3048},"@theme",[50,3442,3443],{"class":220}," {\n",[50,3445,3446],{"class":212,"line":644},[50,3447,3448],{"class":2821},"  --color-primary: v-bind(primaryColor);\n",[50,3450,3451],{"class":212,"line":650},[50,3452,766],{"class":220},[50,3454,3455],{"class":212,"line":656},[50,3456,1574],{"emptyLinePlaceholder":29},[50,3458,3459],{"class":212,"line":662},[50,3460,3461],{"class":1547},"\u002F* Your custom styles *\u002F\n",[50,3463,3464,3466,3469],{"class":212,"line":668},[50,3465,819],{"class":220},[50,3467,3468],{"class":1553},"my-custom-class",[50,3470,3443],{"class":220},[50,3472,3473],{"class":212,"line":674},[50,3474,3475],{"class":1547},"  \u002F* ... *\u002F\n",[50,3477,3478],{"class":212,"line":680},[50,3479,766],{"class":220},[69,3481,3483],{"id":3482},"adding-custom-graphql-queries","Adding Custom GraphQL Queries",[10,3485,3486,3487,3490,3491,3494,3495,221],{},"Place ",[104,3488,3489],{},".gql"," files in ",[104,3492,3493],{},"app\u002Fqueries\u002F",". These are picked up automatically by ",[104,3496,3497],{},"nuxt-graphql-client",[201,3499,3502],{"className":617,"code":3500,"filename":3501,"language":619,"meta":207,"style":207},"query GetMyCustomData {\n  # your query\n}\n","app\u002Fqueries\u002FgetMyCustomData.gql",[104,3503,3504,3509,3514],{"__ignoreMap":207},[50,3505,3506],{"class":212,"line":213},[50,3507,3508],{},"query GetMyCustomData {\n",[50,3510,3511],{"class":212,"line":228},[50,3512,3513],{},"  # your query\n",[50,3515,3516],{"class":212,"line":239},[50,3517,766],{},[69,3519,3521],{"id":3520},"modifying-nuxtconfigts","Modifying nuxt.config.ts",[10,3523,3524,3525,3527,3528,3531],{},"Add modules, routes, or runtime config in the root ",[104,3526,3035],{},". It is ",[86,3529,3530],{},"merged"," with the base config, not replaced:",[201,3533,3535],{"className":3039,"code":3534,"filename":3035,"language":3041,"meta":207,"style":207},"export default defineNuxtConfig({\n  extends: ['.\u002Fwoonuxt_base'],\n\n  \u002F\u002F Add extra modules\n  modules: ['@nuxtjs\u002Fgoogle-fonts'],\n\n  \u002F\u002F Override runtime config\n  runtimeConfig: {\n    public: {\n      PRODUCTS_PER_PAGE: 12,\n    },\n  },\n\n  \u002F\u002F Add custom routes\n  hooks: {\n    'pages:extend'(pages) {\n      pages.push({ name: 'custom', path: '\u002Fcustom', file: '~\u002Fapp\u002Fpages\u002Fcustom.vue' })\n    },\n  },\n})\n",[104,3536,3537,3549,3567,3571,3576,3596,3600,3605,3614,3623,3636,3641,3646,3650,3655,3664,3684,3746,3750,3754],{"__ignoreMap":207},[50,3538,3539,3541,3543,3545,3547],{"class":212,"line":213},[50,3540,3049],{"class":3048},[50,3542,3052],{"class":3048},[50,3544,3055],{"class":1565},[50,3546,3058],{"class":2821},[50,3548,3061],{"class":220},[50,3550,3551,3553,3555,3557,3559,3561,3563,3565],{"class":212,"line":228},[50,3552,3066],{"class":216},[50,3554,221],{"class":220},[50,3556,3071],{"class":2821},[50,3558,3074],{"class":220},[50,3560,3077],{"class":224},[50,3562,3074],{"class":220},[50,3564,3082],{"class":2821},[50,3566,3085],{"class":220},[50,3568,3569],{"class":212,"line":239},[50,3570,1574],{"emptyLinePlaceholder":29},[50,3572,3573],{"class":212,"line":250},[50,3574,3575],{"class":1547},"  \u002F\u002F Add extra modules\n",[50,3577,3578,3581,3583,3585,3587,3590,3592,3594],{"class":212,"line":644},[50,3579,3580],{"class":216},"  modules",[50,3582,221],{"class":220},[50,3584,3071],{"class":2821},[50,3586,3074],{"class":220},[50,3588,3589],{"class":224},"@nuxtjs\u002Fgoogle-fonts",[50,3591,3074],{"class":220},[50,3593,3082],{"class":2821},[50,3595,3085],{"class":220},[50,3597,3598],{"class":212,"line":650},[50,3599,1574],{"emptyLinePlaceholder":29},[50,3601,3602],{"class":212,"line":656},[50,3603,3604],{"class":1547},"  \u002F\u002F Override runtime config\n",[50,3606,3607,3610,3612],{"class":212,"line":662},[50,3608,3609],{"class":216},"  runtimeConfig",[50,3611,221],{"class":220},[50,3613,3443],{"class":220},[50,3615,3616,3619,3621],{"class":212,"line":668},[50,3617,3618],{"class":216},"    public",[50,3620,221],{"class":220},[50,3622,3443],{"class":220},[50,3624,3625,3628,3630,3634],{"class":212,"line":674},[50,3626,3627],{"class":216},"      PRODUCTS_PER_PAGE",[50,3629,221],{"class":220},[50,3631,3633],{"class":3632},"sx098"," 12",[50,3635,3085],{"class":220},[50,3637,3638],{"class":212,"line":680},[50,3639,3640],{"class":220},"    },\n",[50,3642,3643],{"class":212,"line":686},[50,3644,3645],{"class":220},"  },\n",[50,3647,3648],{"class":212,"line":692},[50,3649,1574],{"emptyLinePlaceholder":29},[50,3651,3652],{"class":212,"line":698},[50,3653,3654],{"class":1547},"  \u002F\u002F Add custom routes\n",[50,3656,3657,3660,3662],{"class":212,"line":704},[50,3658,3659],{"class":216},"  hooks",[50,3661,221],{"class":220},[50,3663,3443],{"class":220},[50,3665,3666,3669,3672,3674,3676,3680,3682],{"class":212,"line":710},[50,3667,3668],{"class":220},"    '",[50,3670,3671],{"class":224},"pages:extend",[50,3673,3074],{"class":220},[50,3675,3058],{"class":220},[50,3677,3679],{"class":3678},"s7ZW3","pages",[50,3681,509],{"class":220},[50,3683,3443],{"class":220},[50,3685,3686,3689,3691,3694,3696,3699,3702,3704,3707,3710,3712,3715,3718,3720,3722,3725,3727,3729,3732,3734,3736,3739,3741,3744],{"class":212,"line":716},[50,3687,3688],{"class":2821},"      pages",[50,3690,819],{"class":220},[50,3692,3693],{"class":1565},"push",[50,3695,3058],{"class":216},[50,3697,3698],{"class":220},"{",[50,3700,3701],{"class":216}," name",[50,3703,221],{"class":220},[50,3705,3706],{"class":220}," '",[50,3708,3709],{"class":224},"custom",[50,3711,3074],{"class":220},[50,3713,3714],{"class":220},",",[50,3716,3717],{"class":216}," path",[50,3719,221],{"class":220},[50,3721,3706],{"class":220},[50,3723,3724],{"class":224},"\u002Fcustom",[50,3726,3074],{"class":220},[50,3728,3714],{"class":220},[50,3730,3731],{"class":216}," file",[50,3733,221],{"class":220},[50,3735,3706],{"class":220},[50,3737,3738],{"class":224},"~\u002Fapp\u002Fpages\u002Fcustom.vue",[50,3740,3074],{"class":220},[50,3742,3743],{"class":220}," }",[50,3745,3098],{"class":216},[50,3747,3748],{"class":212,"line":722},[50,3749,3640],{"class":220},[50,3751,3752],{"class":212,"line":728},[50,3753,3645],{"class":220},[50,3755,3756,3758],{"class":212,"line":734},[50,3757,3095],{"class":220},[50,3759,3098],{"class":2821},[69,3761,3763],{"id":3762},"what-should-not-be-edited","What Should NOT Be Edited",[10,3765,3766,3767,3770],{},"Avoid editing files inside ",[104,3768,3769],{},"woonuxt_base\u002F"," directly. Changes there will be lost when you pull upstream updates. If you need to change base behavior:",[125,3772,3773,3782,3791],{},[82,3774,3775,3778,3779,3781],{},[86,3776,3777],{},"Components"," → copy to ",[104,3780,3118],{}," with the same path",[82,3783,3784,3778,3787,3790],{},[86,3785,3786],{},"Composables",[104,3788,3789],{},"app\u002Fcomposables\u002F"," and adjust imports",[82,3792,3793,3796,3797],{},[86,3794,3795],{},"Config"," → override in root ",[104,3798,3035],{},[1145,3800,3801],{},[10,3802,3803,3804,3806,3807,3810],{},"Keep ",[104,3805,3769],{}," as a clean git submodule or subtree so you can ",[104,3808,3809],{},"git pull"," upstream changes without conflicts.",[1329,3812,3813],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s6cf3, html code.shiki .s6cf3{--shiki-default:#89DDFF;--shiki-default-font-style:italic}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html pre.shiki code .s0W1g, html code.shiki .s0W1g{--shiki-default:#BABED8}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .s-wAU, html code.shiki .s-wAU{--shiki-default:#F07178}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sJ14y, html code.shiki .sJ14y{--shiki-default:#C792EA}html pre.shiki code .sx098, html code.shiki .sx098{--shiki-default:#F78C6C}html pre.shiki code .s7ZW3, html code.shiki .s7ZW3{--shiki-default:#BABED8;--shiki-default-font-style:italic}",{"title":207,"searchDepth":228,"depth":228,"links":3815},[3816,3817,3820,3821,3822,3823,3824],{"id":3019,"depth":228,"text":3020},{"id":3107,"depth":228,"text":3108,"children":3818},[3819],{"id":3176,"depth":239,"text":3177},{"id":3356,"depth":228,"text":3357},{"id":3395,"depth":228,"text":3396},{"id":3482,"depth":228,"text":3483},{"id":3520,"depth":228,"text":3521},{"id":3762,"depth":228,"text":3763},"How to customize WooNuxt using Nuxt Layers without modifying core files",{},{"icon":3828},"i-lucide-layers","\u002Fgetting-started\u002Fcustomization",{"title":3008,"description":3825},"1.getting-started\u002F4.customization","UXX0ykM4xIERhxoKzxQRR19xaD6Knxzf4UtV0eAncfU",{"id":3834,"title":1684,"body":3835,"description":4008,"extension":1365,"links":1366,"meta":4009,"navigation":4010,"path":4011,"seo":4012,"stem":4013,"__hash__":4014},"docs\u002F2.wordpress-setup\u002F1.index.md",{"type":7,"value":3836,"toc":4000},[3837,3840,3844,3847,3851,3885,3889,3892,3910,3914,3917,3949,3953,3991,3993],[10,3838,3839],{},"This section covers everything you need to configure on the WordPress side for WooNuxt to work properly.",[69,3841,3843],{"id":3842},"overview","Overview",[10,3845,3846],{},"WooNuxt requires a properly configured WordPress installation with WooCommerce and several plugins to function as a headless eCommerce backend.",[69,3848,3850],{"id":3849},"required-components","Required Components",[125,3852,3853,3859,3865,3870,3875,3880],{},[82,3854,3855,3858],{},[86,3856,3857],{},"WordPress 6.9.4+"," - Core WordPress installation with proper permalinks",[82,3860,3861,3864],{},[86,3862,3863],{},"WooCommerce 10.7.0+"," - Fully configured with products, shipping, and payments",[82,3866,3867,3869],{},[86,3868,2070],{}," - Essential plugin that configures everything for you",[82,3871,3872,3874],{},[86,3873,205],{}," - Exposes WordPress data via GraphQL (auto-installed)",[82,3876,3877,3879],{},[86,3878,262],{}," - Adds WooCommerce support to WPGraphQL (auto-installed)",[82,3881,3882,3884],{},[86,3883,303],{}," - Enables customer authentication (auto-installed)",[69,3886,3888],{"id":3887},"setup-process","Setup Process",[10,3890,3891],{},"Follow these guides in order:",[79,3893,3894,3903],{},[82,3895,3896,3902],{},[86,3897,3898],{},[26,3899,3901],{"href":3900},"\u002Fdocs\u002Fwordpress-setup\u002Fconfiguration","Initial Configuration"," - Set up WordPress basics and permalinks",[82,3904,3905,3909],{},[86,3906,3907],{},[26,3908,5],{"href":1699}," - Install and configure WooNuxt Settings plugin (version 2.5.9+)",[69,3911,3913],{"id":3912},"quick-checklist","Quick Checklist",[10,3915,3916],{},"Before proceeding to frontend setup, ensure:",[775,3918,3919],{},[125,3920,3921,3923,3925,3928,3931,3934,3937,3940,3943,3946],{},[82,3922,2536],{},[82,3924,2530],{},[82,3926,3927],{},"Product attributes created and assigned",[82,3929,3930],{},"Shipping zones configured",[82,3932,3933],{},"Payment method enabled",[82,3935,3936],{},"WooNuxt Settings plugin installed",[82,3938,3939],{},"Required plugins auto-installed",[82,3941,3942],{},"Global attributes configured",[82,3944,3945],{},"GraphQL endpoint accessible",[82,3947,3948],{},"Test queries work in GraphiQL IDE",[69,3950,3952],{"id":3951},"why-this-setup-works","Why This Setup Works",[125,3954,3955,3961,3967,3973,3979,3985],{},[82,3956,3957,3960],{},[86,3958,3959],{},"⚡ Fast Performance",": Static generation and optimized delivery",[82,3962,3963,3966],{},[86,3964,3965],{},"🎨 Design Freedom",": Complete control over frontend appearance",[82,3968,3969,3972],{},[86,3970,3971],{},"🔒 Secure",": WordPress admin hidden from public",[82,3974,3975,3978],{},[86,3976,3977],{},"📈 Scalable",": Frontend can be deployed on CDN",[82,3980,3981,3984],{},[86,3982,3983],{},"🔧 Maintainable",": Updates to WordPress don't break frontend",[82,3986,3987,3990],{},[86,3988,3989],{},"🌍 Multi-Platform",": Same backend can power web, mobile, etc.",[69,3992,1312],{"id":1311},[145,3994,3995],{},[148,3996,3997],{"icon":2982,"title":3901,"to":3900},[10,3998,3999],{},"Set up WordPress permalinks and basic settings",{"title":207,"searchDepth":228,"depth":228,"links":4001},[4002,4003,4004,4005,4006,4007],{"id":3842,"depth":228,"text":3843},{"id":3849,"depth":228,"text":3850},{"id":3887,"depth":228,"text":3888},{"id":3912,"depth":228,"text":3913},{"id":3951,"depth":228,"text":3952},{"id":1311,"depth":228,"text":1312},"Configure WordPress and WooCommerce for WooNuxt",{},{"icon":1683},"\u002Fwordpress-setup",{"title":1684,"description":4008},"2.wordpress-setup\u002F1.index","MyLkmfCUKDqfuk_7U9y8sgUUsawYrQWDAY3jYuxTPxA",{"id":4016,"title":3901,"body":4017,"description":4121,"extension":1365,"links":1366,"meta":4122,"navigation":4123,"path":4124,"seo":4125,"stem":4126,"__hash__":4127},"docs\u002F2.wordpress-setup\u002F2.configuration.md",{"type":7,"value":4018,"toc":4116},[4019,4022,4026,4034,4051,4065,4069,4072,4098,4101,4103,4106],[10,4020,4021],{},"WooNuxt requires specific WordPress configuration to enable the GraphQL endpoint. This should only take a few minutes.",[69,4023,4025],{"id":4024},"configure-permalinks","Configure Permalinks",[926,4027,4028],{},[10,4029,4030,4031,4033],{},"WPGraphQL requires pretty permalinks. Without this, your GraphQL endpoint at ",[104,4032,790],{}," won't be accessible.",[79,4035,4036,4040,4047],{},[82,4037,129,4038,133],{},[86,4039,828],{},[82,4041,4042,4043,4046],{},"Select ",[86,4044,4045],{},"Post name"," structure",[82,4048,98,4049],{},[86,4050,832],{},[10,4052,4053,4054,4057,4058,4061,4062,4064],{},"This changes URLs from ",[104,4055,4056],{},"?p=123"," to ",[104,4059,4060],{},"\u002Fsample-post\u002F"," and enables the ",[104,4063,790],{}," endpoint.",[69,4066,4068],{"id":4067},"verify-requirements","Verify Requirements",[10,4070,4071],{},"Ensure you have:",[125,4073,4074,4083,4092],{},[82,4075,4076,4079,4080],{},[86,4077,4078],{},"WordPress 6.8.3+"," - Check ",[86,4081,4082],{},"Dashboard > Updates",[82,4084,4085,4079,4088,4091],{},[86,4086,4087],{},"WooCommerce 10.3.5+",[86,4089,4090],{},"Plugins"," page",[82,4093,4094,4097],{},[86,4095,4096],{},"At least one published product"," - For testing the connection",[10,4099,4100],{},"That's it for WordPress configuration! The rest is handled by the WooNuxt Settings plugin.",[69,4102,1312],{"id":1311},[10,4104,4105],{},"Now install the required plugins:",[145,4107,4108],{},[148,4109,4111],{"icon":1369,"title":4110},"Install Plugins",[10,4112,4113],{},[26,4114,4115],{"href":1699},"Continue to Plugin Installation →",{"title":207,"searchDepth":228,"depth":228,"links":4117},[4118,4119,4120],{"id":4024,"depth":228,"text":4025},{"id":4067,"depth":228,"text":4068},{"id":1311,"depth":228,"text":1312},"Configure WordPress basics for WooNuxt",{},{"icon":2982},"\u002Fwordpress-setup\u002Fconfiguration",{"title":3901,"description":4121},"2.wordpress-setup\u002F2.configuration","_MNEHn4oByp3HtbGJ0VT0DNKQYNNHwDAMWhH4sEvD3c",{"id":4,"title":5,"body":4129,"description":1364,"extension":1365,"links":1366,"meta":5076,"navigation":5077,"path":1370,"seo":5078,"stem":1372,"__hash__":1373},{"type":7,"value":4130,"toc":5044},[4131,4133,4151,4153,4155,4179,4181,4183,4191,4193,4195,4221,4223,4225,4335,4337,4341,4357,4361,4363,4365,4367,4439,4441,4443,4467,4471,4473,4475,4489,4491,4493,4517,4519,4523,4627,4629,4631,4647,4649,4659,4667,4669,4671,4673,4677,4681,4683,4685,4690,4694,4708,4712,4722,4724,4726,4731,4747,4751,4761,4763,4765,4770,4774,4782,4784,4786,4788,4793,4797,4807,4811,4813,4815,4820,4824,4834,4838,4848,4852,4854,4856,4860,4862,4866,4890,4896,4898,4900,4904,4923,4925,4927,4929,4939,4943,4945,4947,5031,5033,5035,5042],[10,4132,12],{},[14,4134,24,4136],{"className":4135},[17,18,19,20,21,22,23],[26,4137,42,4139,42,4148,24],{"href":28,"download":29,"className":4138},[17,18,31,32,33,34,35,36,37,38,39,40,41],[14,4140,48,4142,48,4145,42],{"className":4141},[17,46,47],[50,4143,54],{"className":4144},[53],[50,4146,59],{"className":4147},[58],[61,4149],{"className":4150,"width":65,"height":65,"src":66,"alt":67},[64],[69,4152,72],{"id":71},[74,4154,77],{"id":76},[79,4156,4157,4161,4165,4171,4175],{},[82,4158,84,4159],{},[86,4160,88],{},[82,4162,91,4163,95],{},[86,4164,94],{},[82,4166,98,4167,102,4169],{},[86,4168,101],{},[104,4170,59],{},[82,4172,98,4173],{},[86,4174,110],{},[82,4176,98,4177,116],{},[86,4178,115],{},[74,4180,120],{"id":119},[10,4182,123],{},[125,4184,4185,4189],{},[82,4186,129,4187,133],{},[86,4188,132],{},[82,4190,136],{},[69,4192,140],{"id":139},[10,4194,143],{},[145,4196,4197,4201,4205,4209,4213,4217],{},[148,4198,4199],{"icon":150,"title":151},[10,4200,154],{},[148,4202,4203],{"icon":157,"title":158},[10,4204,161],{},[148,4206,4207],{"icon":164,"title":165},[10,4208,168],{},[148,4210,4211],{"icon":171,"title":172},[10,4212,175],{},[148,4214,4215],{"icon":178,"title":179},[10,4216,182],{},[148,4218,4219],{"icon":185,"title":186},[10,4220,189],{},[69,4222,193],{"id":192},[10,4224,196],{},[198,4226,4227,4263,4299],{},[201,4228,4229],{"className":203,"code":204,"filename":205,"language":206,"meta":207,"style":207},[104,4230,4231,4239,4247,4255],{"__ignoreMap":207},[50,4232,4233,4235,4237],{"class":212,"line":213},[50,4234,217],{"class":216},[50,4236,221],{"class":220},[50,4238,225],{"class":224},[50,4240,4241,4243,4245],{"class":212,"line":228},[50,4242,231],{"class":216},[50,4244,221],{"class":220},[50,4246,236],{"class":224},[50,4248,4249,4251,4253],{"class":212,"line":239},[50,4250,242],{"class":216},[50,4252,221],{"class":220},[50,4254,247],{"class":224},[50,4256,4257,4259,4261],{"class":212,"line":250},[50,4258,253],{"class":216},[50,4260,221],{"class":220},[50,4262,258],{"class":224},[201,4264,4265],{"className":203,"code":261,"filename":262,"language":206,"meta":207,"style":207},[104,4266,4267,4275,4283,4291],{"__ignoreMap":207},[50,4268,4269,4271,4273],{"class":212,"line":213},[50,4270,217],{"class":216},[50,4272,221],{"class":220},[50,4274,273],{"class":224},[50,4276,4277,4279,4281],{"class":212,"line":228},[50,4278,231],{"class":216},[50,4280,221],{"class":220},[50,4282,282],{"class":224},[50,4284,4285,4287,4289],{"class":212,"line":239},[50,4286,242],{"class":216},[50,4288,221],{"class":220},[50,4290,291],{"class":224},[50,4292,4293,4295,4297],{"class":212,"line":250},[50,4294,253],{"class":216},[50,4296,221],{"class":220},[50,4298,258],{"class":224},[201,4300,4301],{"className":203,"code":302,"filename":303,"language":206,"meta":207,"style":207},[104,4302,4303,4311,4319,4327],{"__ignoreMap":207},[50,4304,4305,4307,4309],{"class":212,"line":213},[50,4306,217],{"class":216},[50,4308,221],{"class":220},[50,4310,314],{"class":224},[50,4312,4313,4315,4317],{"class":212,"line":228},[50,4314,231],{"class":216},[50,4316,221],{"class":220},[50,4318,323],{"class":224},[50,4320,4321,4323,4325],{"class":212,"line":239},[50,4322,242],{"class":216},[50,4324,221],{"class":220},[50,4326,332],{"class":224},[50,4328,4329,4331,4333],{"class":212,"line":250},[50,4330,253],{"class":216},[50,4332,221],{"class":220},[50,4334,258],{"class":224},[74,4336,344],{"id":343},[10,4338,347,4339,350],{},[86,4340,132],{},[79,4342,4343,4345,4349,4353,4355],{},[82,4344,355],{},[82,4346,358,4347,362],{},[86,4348,361],{},[82,4350,98,4351,367],{},[86,4352,110],{},[82,4354,370],{},[82,4356,373],{},[375,4358,4359],{},[10,4360,379],{},[69,4362,383],{"id":382},[10,4364,386],{},[74,4366,390],{"id":389},[392,4368,4369,4379],{},[395,4370,4371],{},[398,4372,4373,4375,4377],{},[401,4374,403],{},[401,4376,242],{},[401,4378,408],{},[410,4380,4381,4393,4405,4417,4429],{},[398,4382,4383,4387,4389],{},[415,4384,4385],{},[86,4386,67],{},[415,4388,421],{},[415,4390,4391],{},[104,4392,426],{},[398,4394,4395,4399,4401],{},[415,4396,4397],{},[86,4398,433],{},[415,4400,436],{},[415,4402,4403],{},[104,4404,441],{},[398,4406,4407,4411,4413],{},[415,4408,4409],{},[86,4410,448],{},[415,4412,451],{},[415,4414,4415],{},[104,4416,456],{},[398,4418,4419,4423,4425],{},[415,4420,4421],{},[86,4422,463],{},[415,4424,466],{},[415,4426,4427],{},[104,4428,471],{},[398,4430,4431,4435,4437],{},[415,4432,4433],{},[86,4434,478],{},[415,4436,481],{},[415,4438,484],{},[74,4440,488],{"id":487},[10,4442,491],{},[125,4444,4445,4449,4455,4459,4463],{},[82,4446,4447,499],{},[86,4448,498],{},[82,4450,4451,505,4453,509],{},[86,4452,504],{},[104,4454,508],{},[82,4456,4457,515],{},[86,4458,514],{},[82,4460,4461,521],{},[86,4462,520],{},[82,4464,4465,527],{},[86,4466,526],{},[10,4468,530,4469,534],{},[104,4470,533],{},[74,4472,538],{"id":537},[10,4474,541],{},[125,4476,4477,4481,4485],{},[82,4478,4479,549],{},[86,4480,548],{},[82,4482,4483,555],{},[86,4484,554],{},[82,4486,4487,561],{},[86,4488,560],{},[74,4490,565],{"id":564},[10,4492,568],{},[125,4494,4495,4499],{},[82,4496,573,4497],{},[86,4498,576],{},[82,4500,579,4501,583,4503],{},[104,4502,582],{},[125,4504,4505,4509,4513],{},[82,4506,4507,591],{},[104,4508,590],{},[82,4510,4511,597],{},[104,4512,596],{},[82,4514,4515,603],{},[104,4516,602],{},[69,4518,607],{"id":606},[10,4520,610,4521,614],{},[104,4522,613],{},[201,4524,4525],{"className":617,"code":618,"language":619,"meta":207,"style":207},[104,4526,4527,4531,4535,4539,4543,4547,4551,4555,4559,4563,4567,4571,4575,4579,4583,4587,4591,4595,4599,4603,4607,4611,4615,4619,4623],{"__ignoreMap":207},[50,4528,4529],{"class":212,"line":213},[50,4530,626],{},[50,4532,4533],{"class":212,"line":228},[50,4534,631],{},[50,4536,4537],{"class":212,"line":239},[50,4538,636],{},[50,4540,4541],{"class":212,"line":250},[50,4542,641],{},[50,4544,4545],{"class":212,"line":644},[50,4546,647],{},[50,4548,4549],{"class":212,"line":650},[50,4550,653],{},[50,4552,4553],{"class":212,"line":656},[50,4554,659],{},[50,4556,4557],{"class":212,"line":662},[50,4558,665],{},[50,4560,4561],{"class":212,"line":668},[50,4562,671],{},[50,4564,4565],{"class":212,"line":674},[50,4566,677],{},[50,4568,4569],{"class":212,"line":680},[50,4570,683],{},[50,4572,4573],{"class":212,"line":686},[50,4574,689],{},[50,4576,4577],{"class":212,"line":692},[50,4578,695],{},[50,4580,4581],{"class":212,"line":698},[50,4582,701],{},[50,4584,4585],{"class":212,"line":704},[50,4586,707],{},[50,4588,4589],{"class":212,"line":710},[50,4590,713],{},[50,4592,4593],{"class":212,"line":716},[50,4594,719],{},[50,4596,4597],{"class":212,"line":722},[50,4598,725],{},[50,4600,4601],{"class":212,"line":728},[50,4602,731],{},[50,4604,4605],{"class":212,"line":734},[50,4606,737],{},[50,4608,4609],{"class":212,"line":740},[50,4610,743],{},[50,4612,4613],{"class":212,"line":746},[50,4614,749],{},[50,4616,4617],{"class":212,"line":752},[50,4618,719],{},[50,4620,4621],{"class":212,"line":757},[50,4622,760],{},[50,4624,4625],{"class":212,"line":763},[50,4626,766],{},[69,4628,770],{"id":769},[10,4630,773],{},[775,4632,4633],{},[125,4634,4635,4637,4639,4643,4645],{},[82,4636,781],{},[82,4638,784],{},[82,4640,787,4641],{},[104,4642,790],{},[82,4644,793],{},[82,4646,796],{},[69,4648,800],{"id":799},[10,4650,4651,806,4653,813,4656,819],{},[86,4652,805],{},[26,4654,812],{"href":809,"rel":4655},[811],[26,4657,818],{"href":816,"rel":4658},[811],[10,4660,4661,825,4663,829,4665,833],{},[86,4662,824],{},[86,4664,828],{},[86,4666,832],{},[69,4668,837],{"id":836},[10,4670,840],{},[74,4672,844],{"id":843},[10,4674,847,4675,850],{},[86,4676,132],{},[375,4678,4679],{},[10,4680,855],{},[74,4682,859],{"id":858},[10,4684,862],{},[201,4686,4688],{"className":4687,"code":867,"language":868},[866],[104,4689,867],{"__ignoreMap":207},[10,4691,4692],{},[86,4693,875],{},[79,4695,4696,4700,4702,4704],{},[82,4697,880,4698],{},[86,4699,883],{},[82,4701,886],{},[82,4703,889],{},[82,4705,98,4706],{},[86,4707,832],{},[10,4709,4710],{},[86,4711,898],{},[125,4713,4714,4716,4718,4720],{},[82,4715,903],{},[82,4717,906],{},[82,4719,909],{},[82,4721,912],{},[74,4723,433],{"id":915},[10,4725,918],{},[201,4727,4729],{"className":4728,"code":922,"language":868},[866],[104,4730,922],{"__ignoreMap":207},[926,4732,4733,4737],{},[10,4734,930,4735,934],{},[86,4736,933],{},[125,4738,4739,4743],{},[82,4740,939,4741],{},[104,4742,942],{},[82,4744,945,4745],{},[104,4746,948],{},[10,4748,4749],{},[86,4750,953],{},[125,4752,4753,4755,4757,4759],{},[82,4754,958],{},[82,4756,961],{},[82,4758,964],{},[82,4760,967],{},[74,4762,448],{"id":970},[10,4764,973],{},[201,4766,4768],{"className":4767,"code":977,"language":868},[866],[104,4769,977],{"__ignoreMap":207},[10,4771,4772],{},[86,4773,984],{},[125,4775,4776,4778,4780],{},[82,4777,989],{},[82,4779,992],{},[82,4781,995],{},[10,4783,998],{},[74,4785,463],{"id":1001},[10,4787,1004],{},[201,4789,4791],{"className":4790,"code":1008,"language":868},[866],[104,4792,1008],{"__ignoreMap":207},[10,4794,4795],{},[86,4796,1015],{},[125,4798,4799,4801,4803,4805],{},[82,4800,1020],{},[82,4802,1023],{},[82,4804,1026],{},[82,4806,1029],{},[10,4808,1032,4809,1035],{},[104,4810,471],{},[74,4812,478],{"id":1038},[10,4814,1041],{},[201,4816,4818],{"className":4817,"code":1045,"language":868},[866],[104,4819,1045],{"__ignoreMap":207},[10,4821,4822],{},[86,4823,1052],{},[79,4825,4826,4830],{},[82,4827,4828,1060],{},[86,4829,1059],{},[82,4831,4832,1066],{},[86,4833,1065],{},[10,4835,4836],{},[86,4837,1071],{},[125,4839,4840,4842,4844,4846],{},[82,4841,1076],{},[82,4843,1079],{},[82,4845,1082],{},[82,4847,1085],{},[10,4849,1088,4850,1092],{},[86,4851,1091],{},[74,4853,488],{"id":1095},[10,4855,1098],{},[10,4857,4858],{},[86,4859,1103],{},[10,4861,1106],{},[10,4863,4864],{},[86,4865,1111],{},[79,4867,4868,4872,4874,4876,4886],{},[82,4869,98,4870,1119],{},[86,4871,1118],{},[82,4873,1122],{},[82,4875,1125],{},[82,4877,1128,4878],{},[125,4879,4880,4882,4884],{},[82,4881,1133],{},[82,4883,1136],{},[82,4885,1139],{},[82,4887,98,4888],{},[86,4889,832],{},[1145,4891,4892],{},[10,4893,1149,4894,1153],{},[86,4895,1152],{},[74,4897,538],{"id":1156},[10,4899,1159],{},[10,4901,4902],{},[86,4903,1164],{},[79,4905,4906,4910,4912,4914,4919],{},[82,4907,98,4908,1119],{},[86,4909,1171],{},[82,4911,1174],{},[82,4913,1177],{},[82,4915,1180,4916,1185],{},[26,4917,1183],{"href":1183,"rel":4918},[811],[82,4920,98,4921],{},[86,4922,832],{},[10,4924,1192],{},[74,4926,565],{"id":1195},[10,4928,1198],{},[79,4930,4931,4935,4937],{},[82,4932,1203,4933],{},[86,4934,576],{},[82,4936,1208],{},[82,4938,1211],{},[375,4940,4941],{},[10,4942,1216],{},[69,4944,770],{"id":1219},[10,4946,1222],{},[201,4948,4949],{"className":617,"code":1225,"language":619,"meta":207,"style":207},[104,4950,4951,4955,4959,4963,4967,4971,4975,4979,4983,4987,4991,4995,4999,5003,5007,5011,5015,5019,5023,5027],{"__ignoreMap":207},[50,4952,4953],{"class":212,"line":213},[50,4954,1232],{},[50,4956,4957],{"class":212,"line":228},[50,4958,631],{},[50,4960,4961],{"class":212,"line":239},[50,4962,641],{},[50,4964,4965],{"class":212,"line":250},[50,4966,636],{},[50,4968,4969],{"class":212,"line":644},[50,4970,653],{},[50,4972,4973],{"class":212,"line":650},[50,4974,671],{},[50,4976,4977],{"class":212,"line":656},[50,4978,683],{},[50,4980,4981],{"class":212,"line":662},[50,4982,707],{},[50,4984,4985],{"class":212,"line":668},[50,4986,689],{},[50,4988,4989],{"class":212,"line":674},[50,4990,695],{},[50,4992,4993],{"class":212,"line":680},[50,4994,713],{},[50,4996,4997],{"class":212,"line":686},[50,4998,701],{},[50,5000,5001],{"class":212,"line":692},[50,5002,719],{},[50,5004,5005],{"class":212,"line":698},[50,5006,725],{},[50,5008,5009],{"class":212,"line":704},[50,5010,731],{},[50,5012,5013],{"class":212,"line":710},[50,5014,737],{},[50,5016,5017],{"class":212,"line":716},[50,5018,749],{},[50,5020,5021],{"class":212,"line":722},[50,5022,719],{},[50,5024,5025],{"class":212,"line":728},[50,5026,760],{},[50,5028,5029],{"class":212,"line":734},[50,5030,766],{},[69,5032,1312],{"id":1311},[10,5034,1315],{},[1317,5036,5037],{},[10,5038,1321,5039,1327],{},[26,5040,1326],{"href":1324,"rel":5041},[811],[1329,5043,1331],{},{"title":207,"searchDepth":228,"depth":228,"links":5045},[5046,5050,5051,5054,5060,5061,5062,5063,5074,5075],{"id":71,"depth":228,"text":72,"children":5047},[5048,5049],{"id":76,"depth":239,"text":77},{"id":119,"depth":239,"text":120},{"id":139,"depth":228,"text":140},{"id":192,"depth":228,"text":193,"children":5052},[5053],{"id":343,"depth":239,"text":344},{"id":382,"depth":228,"text":383,"children":5055},[5056,5057,5058,5059],{"id":389,"depth":239,"text":390},{"id":487,"depth":239,"text":488},{"id":537,"depth":239,"text":538},{"id":564,"depth":239,"text":565},{"id":606,"depth":228,"text":607},{"id":769,"depth":228,"text":770},{"id":799,"depth":228,"text":800},{"id":836,"depth":228,"text":837,"children":5064},[5065,5066,5067,5068,5069,5070,5071,5072,5073],{"id":843,"depth":239,"text":844},{"id":858,"depth":239,"text":859},{"id":915,"depth":239,"text":433},{"id":970,"depth":239,"text":448},{"id":1001,"depth":239,"text":463},{"id":1038,"depth":239,"text":478},{"id":1095,"depth":239,"text":488},{"id":1156,"depth":239,"text":538},{"id":1195,"depth":239,"text":565},{"id":1219,"depth":228,"text":770},{"id":1311,"depth":228,"text":1312},{},{"icon":1369},{"title":5,"description":1364},{"id":5080,"title":5081,"body":5082,"description":5422,"extension":1365,"links":1366,"meta":5423,"navigation":5424,"path":5426,"seo":5427,"stem":5428,"__hash__":5429},"docs\u002F3.configuration\u002F1.deployment.md","Deployment",{"type":7,"value":5083,"toc":5410},[5084,5087,5091,5153,5156,5160,5186,5190,5193,5218,5221,5224,5249,5253,5267,5271,5274,5329,5337,5341,5344,5400,5407],[10,5085,5086],{},"WooNuxt supports three output modes. Choose the one that fits your hosting and catalog size.",[69,5088,5090],{"id":5089},"output-modes","Output Modes",[392,5092,5093,5106],{},[395,5094,5095],{},[398,5096,5097,5100,5103],{},[401,5098,5099],{},"Mode",[401,5101,5102],{},"Command",[401,5104,5105],{},"Best For",[410,5107,5108,5123,5138],{},[398,5109,5110,5115,5120],{},[415,5111,5112],{},[86,5113,5114],{},"Static (SSG)",[415,5116,5117],{},[104,5118,5119],{},"nuxt generate",[415,5121,5122],{},"Small–medium catalogs, cheapest hosting",[398,5124,5125,5130,5135],{},[415,5126,5127],{},[86,5128,5129],{},"Server (SSR)",[415,5131,5132],{},[104,5133,5134],{},"nuxt build",[415,5136,5137],{},"Large catalogs, always-fresh data",[398,5139,5140,5145,5150],{},[415,5141,5142],{},[86,5143,5144],{},"Hybrid (ISR)",[415,5146,5147,5149],{},[104,5148,5134],{}," + ISR routes",[415,5151,5152],{},"Large catalogs with caching",[69,5154,1059],{"id":5155},"netlify",[74,5157,5159],{"id":5158},"static-generation-recommended","Static Generation (Recommended)",[79,5161,5162,5165,5175,5183],{},[82,5163,5164],{},"Connect your GitHub repo in the Netlify dashboard",[82,5166,5167,5168,5171,5172],{},"Set ",[86,5169,5170],{},"Build command",": ",[104,5173,5174],{},"npm run generate",[82,5176,5167,5177,5171,5180],{},[86,5178,5179],{},"Publish directory",[104,5181,5182],{},".output\u002Fpublic",[82,5184,5185],{},"Add environment variables (see below)",[74,5187,5189],{"id":5188},"build-hook-trigger-rebuild-from-wordpress","Build Hook (Trigger Rebuild from WordPress)",[10,5191,5192],{},"When content changes in WooCommerce (new products, price updates), you can trigger a rebuild automatically:",[79,5194,5195,5202,5205,5212],{},[82,5196,5197,5198,5201],{},"In Netlify: ",[86,5199,5200],{},"Site settings > Build & deploy > Build hooks"," → create a hook",[82,5203,5204],{},"Copy the hook URL",[82,5206,5207,5208,5211],{},"In WordPress: ",[86,5209,5210],{},"Settings > WooNuxt > Build Hook"," → paste the URL",[82,5213,98,5214,5217],{},[86,5215,5216],{},"Trigger Rebuild"," to test",[10,5219,5220],{},"The rebuild button appears in the WooNuxt Settings admin page only when a Build Hook URL is configured.",[69,5222,1065],{"id":5223},"vercel",[79,5225,5226,5229,5236,5246],{},[82,5227,5228],{},"Import your GitHub repo in the Vercel dashboard",[82,5230,5231,5232,5235],{},"Framework preset: ",[86,5233,5234],{},"Nuxt.js"," (auto-detected)",[82,5237,5238,5239,5241,5242,5245],{},"Build command: ",[104,5240,5174],{}," (SSG) or ",[104,5243,5244],{},"npm run build"," (SSR)",[82,5247,5248],{},"Add environment variables",[74,5250,5252],{"id":5251},"build-hook-for-vercel","Build Hook for Vercel",[79,5254,5255,5261],{},[82,5256,5257,5258,5201],{},"In Vercel: ",[86,5259,5260],{},"Project > Settings > Git > Deploy Hooks",[82,5262,5263,5264,5266],{},"Copy the URL and paste it into ",[86,5265,5210],{}," in WordPress",[69,5268,5270],{"id":5269},"required-environment-variables","Required Environment Variables",[10,5272,5273],{},"Set these in your hosting provider's environment variables panel:",[201,5275,5277],{"className":1842,"code":5276,"language":1844,"meta":207,"style":207},"# Required\nGQL_HOST=https:\u002F\u002Fyourwordpress.com\u002Fgraphql\nNUXT_IMAGE_DOMAINS=yourwordpress.com,cdn.yourwordpress.com\n\n# Optional — overrides WooNuxt Settings plugin values\nNUXT_PUBLIC_PRODUCTS_PER_PAGE=24\nNUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_...\nPRIMARY_COLOR=#7F54B2\n\n# Optional — ISR cache lifetime (SSR\u002Fhybrid mode only)\nCATALOG_ISR_TTL=3600\n",[104,5278,5279,5284,5289,5294,5298,5303,5307,5312,5316,5320,5325],{"__ignoreMap":207},[50,5280,5281],{"class":212,"line":213},[50,5282,5283],{},"# Required\n",[50,5285,5286],{"class":212,"line":228},[50,5287,5288],{},"GQL_HOST=https:\u002F\u002Fyourwordpress.com\u002Fgraphql\n",[50,5290,5291],{"class":212,"line":239},[50,5292,5293],{},"NUXT_IMAGE_DOMAINS=yourwordpress.com,cdn.yourwordpress.com\n",[50,5295,5296],{"class":212,"line":250},[50,5297,1574],{"emptyLinePlaceholder":29},[50,5299,5300],{"class":212,"line":644},[50,5301,5302],{},"# Optional — overrides WooNuxt Settings plugin values\n",[50,5304,5305],{"class":212,"line":650},[50,5306,1927],{},[50,5308,5309],{"class":212,"line":656},[50,5310,5311],{},"NUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_...\n",[50,5313,5314],{"class":212,"line":662},[50,5315,1955],{},[50,5317,5318],{"class":212,"line":668},[50,5319,1574],{"emptyLinePlaceholder":29},[50,5321,5322],{"class":212,"line":674},[50,5323,5324],{},"# Optional — ISR cache lifetime (SSR\u002Fhybrid mode only)\n",[50,5326,5327],{"class":212,"line":680},[50,5328,1913],{},[926,5330,5331],{},[10,5332,5333,5334,5336],{},"Never commit your ",[104,5335,1838],{}," file. All secrets should be set via your hosting provider's environment variables UI.",[69,5338,5340],{"id":5339},"ssl-for-local-development","SSL for Local Development",[10,5342,5343],{},"If you need HTTPS locally (Stripe, PWA, OAuth providers):",[201,5345,5347],{"className":1538,"code":5346,"filename":1738,"language":1540,"meta":207,"style":207},"# Install mkcert\nbrew install mkcert\nmkcert -install\n\n# Generate local certificate\nmkcert localhost\n\n# Run dev server with SSL\nnpm run dev:ssl\n",[104,5348,5349,5354,5362,5368,5372,5377,5383,5387,5392],{"__ignoreMap":207},[50,5350,5351],{"class":212,"line":213},[50,5352,5353],{"class":1547},"# Install mkcert\n",[50,5355,5356,5358,5360],{"class":212,"line":228},[50,5357,2199],{"class":1553},[50,5359,2202],{"class":224},[50,5361,2205],{"class":224},[50,5363,5364,5366],{"class":212,"line":239},[50,5365,2290],{"class":1553},[50,5367,2319],{"class":224},[50,5369,5370],{"class":212,"line":250},[50,5371,1574],{"emptyLinePlaceholder":29},[50,5373,5374],{"class":212,"line":644},[50,5375,5376],{"class":1547},"# Generate local certificate\n",[50,5378,5379,5381],{"class":212,"line":650},[50,5380,2290],{"class":1553},[50,5382,2293],{"class":224},[50,5384,5385],{"class":212,"line":656},[50,5386,1574],{"emptyLinePlaceholder":29},[50,5388,5389],{"class":212,"line":662},[50,5390,5391],{"class":1547},"# Run dev server with SSL\n",[50,5393,5394,5396,5398],{"class":212,"line":668},[50,5395,1584],{"class":1553},[50,5397,1647],{"class":224},[50,5399,2341],{"class":224},[10,5401,2381,5402,5404,5405,819],{},[104,5403,2384],{}," script is pre-configured in ",[104,5406,2388],{},[1329,5408,5409],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}",{"title":207,"searchDepth":228,"depth":228,"links":5411},[5412,5413,5417,5420,5421],{"id":5089,"depth":228,"text":5090},{"id":5155,"depth":228,"text":1059,"children":5414},[5415,5416],{"id":5158,"depth":239,"text":5159},{"id":5188,"depth":239,"text":5189},{"id":5223,"depth":228,"text":1065,"children":5418},[5419],{"id":5251,"depth":239,"text":5252},{"id":5269,"depth":228,"text":5270},{"id":5339,"depth":228,"text":5340},"Deploy WooNuxt to Netlify, Vercel, or any static host",{},{"icon":5425},"i-lucide-rocket","\u002Fconfiguration\u002Fdeployment",{"title":5081,"description":5422},"3.configuration\u002F1.deployment","SlfnFYHvqwXRGCh2f75QwzbwC1_O6bmFQybrW1g_3LY",{"id":5431,"title":3786,"body":5432,"description":6475,"extension":1365,"links":1366,"meta":6476,"navigation":6477,"path":6479,"seo":6480,"stem":6481,"__hash__":6482},"docs\u002F3.configuration\u002F2.composables.md",{"type":7,"value":5433,"toc":6460},[5434,5437,5441,5444,5568,5582,5585,5589,5592,5724,5730,5732,5736,5739,5811,5813,5817,5820,5872,5879,5881,5885,5888,5949,5951,5955,5958,6000,6019,6021,6025,6028,6090,6092,6096,6102,6174,6176,6180,6183,6235,6237,6241,6244,6305,6307,6311,6314,6343,6345,6349,6352,6380,6394,6396,6399,6405,6457],[10,5435,5436],{},"WooNuxt provides 13 composables that handle all store logic. They are available globally — no import needed.",[69,5438,5440],{"id":5439},"usecart","useCart",[10,5442,5443],{},"Manages the shopping cart state and all cart mutations.",[201,5445,5447],{"className":3039,"code":5446,"language":3041,"meta":207,"style":207},"const {\n  cart,              \u002F\u002F Ref\u003CCart> — reactive cart object\n  cartTotals,        \u002F\u002F Computed cart totals\n  cartCount,         \u002F\u002F Computed item count\n  isUpdatingCart,    \u002F\u002F Ref\u003Cboolean> — loading state\n  addToCart,         \u002F\u002F (input: AddToCartInput) => Promise\u003Cvoid>\n  updateItemQuantity,\u002F\u002F (key: string, quantity: number) => Promise\u003Cvoid>\n  removeItem,        \u002F\u002F (key: string) => Promise\u003Cvoid>\n  emptyCart,         \u002F\u002F () => Promise\u003Cvoid>\n  applyCoupon,       \u002F\u002F (code: string) => Promise\u003Cvoid>\n  removeCoupon,      \u002F\u002F (code: string) => Promise\u003Cvoid>\n} = useCart()\n",[104,5448,5449,5456,5466,5476,5486,5496,5506,5516,5526,5536,5546,5556],{"__ignoreMap":207},[50,5450,5451,5454],{"class":212,"line":213},[50,5452,5453],{"class":3207},"const",[50,5455,3443],{"class":220},[50,5457,5458,5461,5463],{"class":212,"line":228},[50,5459,5460],{"class":2821},"  cart",[50,5462,3714],{"class":220},[50,5464,5465],{"class":1547},"              \u002F\u002F Ref\u003CCart> — reactive cart object\n",[50,5467,5468,5471,5473],{"class":212,"line":239},[50,5469,5470],{"class":2821},"  cartTotals",[50,5472,3714],{"class":220},[50,5474,5475],{"class":1547},"        \u002F\u002F Computed cart totals\n",[50,5477,5478,5481,5483],{"class":212,"line":250},[50,5479,5480],{"class":2821},"  cartCount",[50,5482,3714],{"class":220},[50,5484,5485],{"class":1547},"         \u002F\u002F Computed item count\n",[50,5487,5488,5491,5493],{"class":212,"line":644},[50,5489,5490],{"class":2821},"  isUpdatingCart",[50,5492,3714],{"class":220},[50,5494,5495],{"class":1547},"    \u002F\u002F Ref\u003Cboolean> — loading state\n",[50,5497,5498,5501,5503],{"class":212,"line":650},[50,5499,5500],{"class":2821},"  addToCart",[50,5502,3714],{"class":220},[50,5504,5505],{"class":1547},"         \u002F\u002F (input: AddToCartInput) => Promise\u003Cvoid>\n",[50,5507,5508,5511,5513],{"class":212,"line":656},[50,5509,5510],{"class":2821},"  updateItemQuantity",[50,5512,3714],{"class":220},[50,5514,5515],{"class":1547},"\u002F\u002F (key: string, quantity: number) => Promise\u003Cvoid>\n",[50,5517,5518,5521,5523],{"class":212,"line":662},[50,5519,5520],{"class":2821},"  removeItem",[50,5522,3714],{"class":220},[50,5524,5525],{"class":1547},"        \u002F\u002F (key: string) => Promise\u003Cvoid>\n",[50,5527,5528,5531,5533],{"class":212,"line":668},[50,5529,5530],{"class":2821},"  emptyCart",[50,5532,3714],{"class":220},[50,5534,5535],{"class":1547},"         \u002F\u002F () => Promise\u003Cvoid>\n",[50,5537,5538,5541,5543],{"class":212,"line":674},[50,5539,5540],{"class":2821},"  applyCoupon",[50,5542,3714],{"class":220},[50,5544,5545],{"class":1547},"       \u002F\u002F (code: string) => Promise\u003Cvoid>\n",[50,5547,5548,5551,5553],{"class":212,"line":680},[50,5549,5550],{"class":2821},"  removeCoupon",[50,5552,3714],{"class":220},[50,5554,5555],{"class":1547},"      \u002F\u002F (code: string) => Promise\u003Cvoid>\n",[50,5557,5558,5560,5563,5566],{"class":212,"line":686},[50,5559,3095],{"class":220},[50,5561,5562],{"class":220}," =",[50,5564,5565],{"class":1565}," useCart",[50,5567,3345],{"class":2821},[10,5569,5570,5573,5574,5577,5578,5581],{},[86,5571,5572],{},"Modes:"," The cart supports ",[104,5575,5576],{},"optimistic"," (instant UI feedback) and ",[104,5579,5580],{},"safe"," (wait for server confirmation) update modes. Mutations are queued to prevent race conditions.",[5583,5584],"hr",{},[69,5586,5588],{"id":5587},"useauth","useAuth",[10,5590,5591],{},"Handles customer authentication, sessions, and account data.",[201,5593,5595],{"className":3039,"code":5594,"language":3041,"meta":207,"style":207},"const {\n  customer,          \u002F\u002F Ref\u003CCustomer> — logged-in customer data\n  viewer,            \u002F\u002F Ref\u003CViewer> — current user\n  orders,            \u002F\u002F Ref\u003COrder[]>\n  downloads,         \u002F\u002F Ref\u003CDownload[]>\n  isPending,         \u002F\u002F Ref\u003Cboolean>\n  isLoggedIn,        \u002F\u002F ComputedRef\u003Cboolean>\n  loginUser,         \u002F\u002F (input: LoginInput) => Promise\u003C{ success, error }>\n  logoutUser,        \u002F\u002F () => Promise\u003Cvoid>\n  registerUser,      \u002F\u002F (input: RegisterInput) => Promise\u003C{ success, error }>\n  updateCustomer,    \u002F\u002F (input: UpdateCustomerInput) => Promise\u003Cvoid>\n  refreshCart,       \u002F\u002F () => Promise\u003Cvoid>\n} = useAuth()\n",[104,5596,5597,5603,5613,5623,5633,5643,5653,5663,5673,5683,5693,5703,5713],{"__ignoreMap":207},[50,5598,5599,5601],{"class":212,"line":213},[50,5600,5453],{"class":3207},[50,5602,3443],{"class":220},[50,5604,5605,5608,5610],{"class":212,"line":228},[50,5606,5607],{"class":2821},"  customer",[50,5609,3714],{"class":220},[50,5611,5612],{"class":1547},"          \u002F\u002F Ref\u003CCustomer> — logged-in customer data\n",[50,5614,5615,5618,5620],{"class":212,"line":239},[50,5616,5617],{"class":2821},"  viewer",[50,5619,3714],{"class":220},[50,5621,5622],{"class":1547},"            \u002F\u002F Ref\u003CViewer> — current user\n",[50,5624,5625,5628,5630],{"class":212,"line":250},[50,5626,5627],{"class":2821},"  orders",[50,5629,3714],{"class":220},[50,5631,5632],{"class":1547},"            \u002F\u002F Ref\u003COrder[]>\n",[50,5634,5635,5638,5640],{"class":212,"line":644},[50,5636,5637],{"class":2821},"  downloads",[50,5639,3714],{"class":220},[50,5641,5642],{"class":1547},"         \u002F\u002F Ref\u003CDownload[]>\n",[50,5644,5645,5648,5650],{"class":212,"line":650},[50,5646,5647],{"class":2821},"  isPending",[50,5649,3714],{"class":220},[50,5651,5652],{"class":1547},"         \u002F\u002F Ref\u003Cboolean>\n",[50,5654,5655,5658,5660],{"class":212,"line":656},[50,5656,5657],{"class":2821},"  isLoggedIn",[50,5659,3714],{"class":220},[50,5661,5662],{"class":1547},"        \u002F\u002F ComputedRef\u003Cboolean>\n",[50,5664,5665,5668,5670],{"class":212,"line":662},[50,5666,5667],{"class":2821},"  loginUser",[50,5669,3714],{"class":220},[50,5671,5672],{"class":1547},"         \u002F\u002F (input: LoginInput) => Promise\u003C{ success, error }>\n",[50,5674,5675,5678,5680],{"class":212,"line":668},[50,5676,5677],{"class":2821},"  logoutUser",[50,5679,3714],{"class":220},[50,5681,5682],{"class":1547},"        \u002F\u002F () => Promise\u003Cvoid>\n",[50,5684,5685,5688,5690],{"class":212,"line":674},[50,5686,5687],{"class":2821},"  registerUser",[50,5689,3714],{"class":220},[50,5691,5692],{"class":1547},"      \u002F\u002F (input: RegisterInput) => Promise\u003C{ success, error }>\n",[50,5694,5695,5698,5700],{"class":212,"line":680},[50,5696,5697],{"class":2821},"  updateCustomer",[50,5699,3714],{"class":220},[50,5701,5702],{"class":1547},"    \u002F\u002F (input: UpdateCustomerInput) => Promise\u003Cvoid>\n",[50,5704,5705,5708,5710],{"class":212,"line":686},[50,5706,5707],{"class":2821},"  refreshCart",[50,5709,3714],{"class":220},[50,5711,5712],{"class":1547},"       \u002F\u002F () => Promise\u003Cvoid>\n",[50,5714,5715,5717,5719,5722],{"class":212,"line":692},[50,5716,3095],{"class":220},[50,5718,5562],{"class":220},[50,5720,5721],{"class":1565}," useAuth",[50,5723,3345],{"class":2821},[10,5725,5726,5727,819],{},"Authentication uses JWT tokens stored in cookies. Tokens are refreshed automatically on expiry via ",[104,5728,5729],{},"useAuthTokens",[5583,5731],{},[69,5733,5735],{"id":5734},"usecheckout","useCheckout",[10,5737,5738],{},"Controls the checkout flow, shipping, and payment method selection.",[201,5740,5742],{"className":3039,"code":5741,"language":3041,"meta":207,"style":207},"const {\n  orderInput,        \u002F\u002F Ref — checkout form state\n  isProcessingOrder, \u002F\u002F Ref\u003Cboolean>\n  proccessCheckout,  \u002F\u002F () => Promise\u003Cvoid>\n  paymentGateways,   \u002F\u002F Ref\u003CPaymentGateway[]>\n  shippingMethods,   \u002F\u002F Ref\u003CShippingMethod[]>\n} = useCheckout()\n",[104,5743,5744,5750,5760,5770,5780,5790,5800],{"__ignoreMap":207},[50,5745,5746,5748],{"class":212,"line":213},[50,5747,5453],{"class":3207},[50,5749,3443],{"class":220},[50,5751,5752,5755,5757],{"class":212,"line":228},[50,5753,5754],{"class":2821},"  orderInput",[50,5756,3714],{"class":220},[50,5758,5759],{"class":1547},"        \u002F\u002F Ref — checkout form state\n",[50,5761,5762,5765,5767],{"class":212,"line":239},[50,5763,5764],{"class":2821},"  isProcessingOrder",[50,5766,3714],{"class":220},[50,5768,5769],{"class":1547}," \u002F\u002F Ref\u003Cboolean>\n",[50,5771,5772,5775,5777],{"class":212,"line":250},[50,5773,5774],{"class":2821},"  proccessCheckout",[50,5776,3714],{"class":220},[50,5778,5779],{"class":1547},"  \u002F\u002F () => Promise\u003Cvoid>\n",[50,5781,5782,5785,5787],{"class":212,"line":644},[50,5783,5784],{"class":2821},"  paymentGateways",[50,5786,3714],{"class":220},[50,5788,5789],{"class":1547},"   \u002F\u002F Ref\u003CPaymentGateway[]>\n",[50,5791,5792,5795,5797],{"class":212,"line":650},[50,5793,5794],{"class":2821},"  shippingMethods",[50,5796,3714],{"class":220},[50,5798,5799],{"class":1547},"   \u002F\u002F Ref\u003CShippingMethod[]>\n",[50,5801,5802,5804,5806,5809],{"class":212,"line":656},[50,5803,3095],{"class":220},[50,5805,5562],{"class":220},[50,5807,5808],{"class":1565}," useCheckout",[50,5810,3345],{"class":2821},[5583,5812],{},[69,5814,5816],{"id":5815},"usefiltering","useFiltering",[10,5818,5819],{},"Manages URL-based product filtering by attributes, price range, and sale status.",[201,5821,5823],{"className":3039,"code":5822,"language":3041,"meta":207,"style":207},"const {\n  isFiltersActive,   \u002F\u002F ComputedRef\u003Cboolean>\n  activeFilters,     \u002F\u002F ComputedRef\u003CActiveFilters>\n  resetFilters,      \u002F\u002F () => void\n} = useFiltering()\n",[104,5824,5825,5831,5841,5851,5861],{"__ignoreMap":207},[50,5826,5827,5829],{"class":212,"line":213},[50,5828,5453],{"class":3207},[50,5830,3443],{"class":220},[50,5832,5833,5836,5838],{"class":212,"line":228},[50,5834,5835],{"class":2821},"  isFiltersActive",[50,5837,3714],{"class":220},[50,5839,5840],{"class":1547},"   \u002F\u002F ComputedRef\u003Cboolean>\n",[50,5842,5843,5846,5848],{"class":212,"line":239},[50,5844,5845],{"class":2821},"  activeFilters",[50,5847,3714],{"class":220},[50,5849,5850],{"class":1547},"     \u002F\u002F ComputedRef\u003CActiveFilters>\n",[50,5852,5853,5856,5858],{"class":212,"line":250},[50,5854,5855],{"class":2821},"  resetFilters",[50,5857,3714],{"class":220},[50,5859,5860],{"class":1547},"      \u002F\u002F () => void\n",[50,5862,5863,5865,5867,5870],{"class":212,"line":644},[50,5864,3095],{"class":220},[50,5866,5562],{"class":220},[50,5868,5869],{"class":1565}," useFiltering",[50,5871,3345],{"class":2821},[10,5873,5874,5875,5878],{},"Filter state is synced with the URL query string so filters are shareable and survive page refresh. Global attributes are configured via the ",[86,5876,5877],{},"WooNuxt Settings"," plugin.",[5583,5880],{},[69,5882,5884],{"id":5883},"useproducts","useProducts",[10,5886,5887],{},"Manages product list state and the full filtering\u002Fsorting pipeline.",[201,5889,5891],{"className":3039,"code":5890,"language":3041,"meta":207,"style":207},"const {\n  products,          \u002F\u002F Ref\u003CProduct[]>\n  allProducts,       \u002F\u002F Ref\u003CProduct[]> — unfiltered\n  isLoading,         \u002F\u002F Ref\u003Cboolean>\n  loadMore,          \u002F\u002F () => Promise\u003Cvoid>\n} = useProducts()\n",[104,5892,5893,5899,5909,5919,5928,5938],{"__ignoreMap":207},[50,5894,5895,5897],{"class":212,"line":213},[50,5896,5453],{"class":3207},[50,5898,3443],{"class":220},[50,5900,5901,5904,5906],{"class":212,"line":228},[50,5902,5903],{"class":2821},"  products",[50,5905,3714],{"class":220},[50,5907,5908],{"class":1547},"          \u002F\u002F Ref\u003CProduct[]>\n",[50,5910,5911,5914,5916],{"class":212,"line":239},[50,5912,5913],{"class":2821},"  allProducts",[50,5915,3714],{"class":220},[50,5917,5918],{"class":1547},"       \u002F\u002F Ref\u003CProduct[]> — unfiltered\n",[50,5920,5921,5924,5926],{"class":212,"line":250},[50,5922,5923],{"class":2821},"  isLoading",[50,5925,3714],{"class":220},[50,5927,5652],{"class":1547},[50,5929,5930,5933,5935],{"class":212,"line":644},[50,5931,5932],{"class":2821},"  loadMore",[50,5934,3714],{"class":220},[50,5936,5937],{"class":1547},"          \u002F\u002F () => Promise\u003Cvoid>\n",[50,5939,5940,5942,5944,5947],{"class":212,"line":650},[50,5941,3095],{"class":220},[50,5943,5562],{"class":220},[50,5945,5946],{"class":1565}," useProducts",[50,5948,3345],{"class":2821},[5583,5950],{},[69,5952,5954],{"id":5953},"usesorting","useSorting",[10,5956,5957],{},"Controls product sort order.",[201,5959,5961],{"className":3039,"code":5960,"language":3041,"meta":207,"style":207},"const {\n  sortOrder,         \u002F\u002F Ref\u003Cstring>\n  setSortOrder,      \u002F\u002F (order: string) => void\n} = useSorting()\n",[104,5962,5963,5969,5979,5989],{"__ignoreMap":207},[50,5964,5965,5967],{"class":212,"line":213},[50,5966,5453],{"class":3207},[50,5968,3443],{"class":220},[50,5970,5971,5974,5976],{"class":212,"line":228},[50,5972,5973],{"class":2821},"  sortOrder",[50,5975,3714],{"class":220},[50,5977,5978],{"class":1547},"         \u002F\u002F Ref\u003Cstring>\n",[50,5980,5981,5984,5986],{"class":212,"line":239},[50,5982,5983],{"class":2821},"  setSortOrder",[50,5985,3714],{"class":220},[50,5987,5988],{"class":1547},"      \u002F\u002F (order: string) => void\n",[50,5990,5991,5993,5995,5998],{"class":212,"line":250},[50,5992,3095],{"class":220},[50,5994,5562],{"class":220},[50,5996,5997],{"class":1565}," useSorting",[50,5999,3345],{"class":2821},[10,6001,6002,6003,6006,6007,6006,6010,6006,6013,6006,6016,819],{},"Available sort options: ",[104,6004,6005],{},"DATE",", ",[104,6008,6009],{},"PRICE",[104,6011,6012],{},"PRICE_DESC",[104,6014,6015],{},"RATING",[104,6017,6018],{},"POPULARITY",[5583,6020],{},[69,6022,6024],{"id":6023},"usesearch","useSearch",[10,6026,6027],{},"Handles product search queries.",[201,6029,6031],{"className":3039,"code":6030,"language":3041,"meta":207,"style":207},"const {\n  searchQuery,       \u002F\u002F Ref\u003Cstring>\n  searchResults,     \u002F\u002F Ref\u003CProduct[]>\n  isSearching,       \u002F\u002F Ref\u003Cboolean>\n  clearSearch,       \u002F\u002F () => void\n} = useSearch()\n",[104,6032,6033,6039,6049,6059,6069,6079],{"__ignoreMap":207},[50,6034,6035,6037],{"class":212,"line":213},[50,6036,5453],{"class":3207},[50,6038,3443],{"class":220},[50,6040,6041,6044,6046],{"class":212,"line":228},[50,6042,6043],{"class":2821},"  searchQuery",[50,6045,3714],{"class":220},[50,6047,6048],{"class":1547},"       \u002F\u002F Ref\u003Cstring>\n",[50,6050,6051,6054,6056],{"class":212,"line":239},[50,6052,6053],{"class":2821},"  searchResults",[50,6055,3714],{"class":220},[50,6057,6058],{"class":1547},"     \u002F\u002F Ref\u003CProduct[]>\n",[50,6060,6061,6064,6066],{"class":212,"line":250},[50,6062,6063],{"class":2821},"  isSearching",[50,6065,3714],{"class":220},[50,6067,6068],{"class":1547},"       \u002F\u002F Ref\u003Cboolean>\n",[50,6070,6071,6074,6076],{"class":212,"line":644},[50,6072,6073],{"class":2821},"  clearSearch",[50,6075,3714],{"class":220},[50,6077,6078],{"class":1547},"       \u002F\u002F () => void\n",[50,6080,6081,6083,6085,6088],{"class":212,"line":650},[50,6082,3095],{"class":220},[50,6084,5562],{"class":220},[50,6086,6087],{"class":1565}," useSearch",[50,6089,3345],{"class":2821},[5583,6091],{},[69,6093,6095],{"id":6094},"usewishlist","useWishlist",[10,6097,6098,6099,819],{},"Persists a wishlist in ",[104,6100,6101],{},"localStorage",[201,6103,6105],{"className":3039,"code":6104,"language":3041,"meta":207,"style":207},"const {\n  wishlist,          \u002F\u002F Ref\u003Cnumber[]> — array of product IDs\n  addToWishlist,     \u002F\u002F (productId: number) => void\n  removeFromWishlist,\u002F\u002F (productId: number) => void\n  isInWishlist,      \u002F\u002F (productId: number) => boolean\n  toggleWishlist,    \u002F\u002F (productId: number) => void\n} = useWishlist()\n",[104,6106,6107,6113,6123,6133,6143,6153,6163],{"__ignoreMap":207},[50,6108,6109,6111],{"class":212,"line":213},[50,6110,5453],{"class":3207},[50,6112,3443],{"class":220},[50,6114,6115,6118,6120],{"class":212,"line":228},[50,6116,6117],{"class":2821},"  wishlist",[50,6119,3714],{"class":220},[50,6121,6122],{"class":1547},"          \u002F\u002F Ref\u003Cnumber[]> — array of product IDs\n",[50,6124,6125,6128,6130],{"class":212,"line":239},[50,6126,6127],{"class":2821},"  addToWishlist",[50,6129,3714],{"class":220},[50,6131,6132],{"class":1547},"     \u002F\u002F (productId: number) => void\n",[50,6134,6135,6138,6140],{"class":212,"line":250},[50,6136,6137],{"class":2821},"  removeFromWishlist",[50,6139,3714],{"class":220},[50,6141,6142],{"class":1547},"\u002F\u002F (productId: number) => void\n",[50,6144,6145,6148,6150],{"class":212,"line":644},[50,6146,6147],{"class":2821},"  isInWishlist",[50,6149,3714],{"class":220},[50,6151,6152],{"class":1547},"      \u002F\u002F (productId: number) => boolean\n",[50,6154,6155,6158,6160],{"class":212,"line":650},[50,6156,6157],{"class":2821},"  toggleWishlist",[50,6159,3714],{"class":220},[50,6161,6162],{"class":1547},"    \u002F\u002F (productId: number) => void\n",[50,6164,6165,6167,6169,6172],{"class":212,"line":656},[50,6166,3095],{"class":220},[50,6168,5562],{"class":220},[50,6170,6171],{"class":1565}," useWishlist",[50,6173,3345],{"class":2821},[5583,6175],{},[69,6177,6179],{"id":6178},"usecountry","useCountry",[10,6181,6182],{},"Manages country and state selection for address forms.",[201,6184,6186],{"className":3039,"code":6185,"language":3041,"meta":207,"style":207},"const {\n  allowedCountries,  \u002F\u002F Ref\u003CCountry[]>\n  states,            \u002F\u002F Ref\u003CState[]>\n  getStates,         \u002F\u002F (countryCode: string) => Promise\u003Cvoid>\n} = useCountry()\n",[104,6187,6188,6194,6204,6214,6224],{"__ignoreMap":207},[50,6189,6190,6192],{"class":212,"line":213},[50,6191,5453],{"class":3207},[50,6193,3443],{"class":220},[50,6195,6196,6199,6201],{"class":212,"line":228},[50,6197,6198],{"class":2821},"  allowedCountries",[50,6200,3714],{"class":220},[50,6202,6203],{"class":1547},"  \u002F\u002F Ref\u003CCountry[]>\n",[50,6205,6206,6209,6211],{"class":212,"line":239},[50,6207,6208],{"class":2821},"  states",[50,6210,3714],{"class":220},[50,6212,6213],{"class":1547},"            \u002F\u002F Ref\u003CState[]>\n",[50,6215,6216,6219,6221],{"class":212,"line":250},[50,6217,6218],{"class":2821},"  getStates",[50,6220,3714],{"class":220},[50,6222,6223],{"class":1547},"         \u002F\u002F (countryCode: string) => Promise\u003Cvoid>\n",[50,6225,6226,6228,6230,6233],{"class":212,"line":644},[50,6227,3095],{"class":220},[50,6229,5562],{"class":220},[50,6231,6232],{"class":1565}," useCountry",[50,6234,3345],{"class":2821},[5583,6236],{},[69,6238,6240],{"id":6239},"usehelpers","useHelpers",[10,6242,6243],{},"Utility functions used throughout the app.",[201,6245,6247],{"className":3039,"code":6246,"language":3041,"meta":207,"style":207},"const {\n  formatPrice,       \u002F\u002F (price: string) => string\n  stripHtml,         \u002F\u002F (html: string) => string\n  scrollToTop,       \u002F\u002F () => void\n  isClient,          \u002F\u002F boolean\n} = useHelpers()\n",[104,6248,6249,6255,6265,6275,6284,6294],{"__ignoreMap":207},[50,6250,6251,6253],{"class":212,"line":213},[50,6252,5453],{"class":3207},[50,6254,3443],{"class":220},[50,6256,6257,6260,6262],{"class":212,"line":228},[50,6258,6259],{"class":2821},"  formatPrice",[50,6261,3714],{"class":220},[50,6263,6264],{"class":1547},"       \u002F\u002F (price: string) => string\n",[50,6266,6267,6270,6272],{"class":212,"line":239},[50,6268,6269],{"class":2821},"  stripHtml",[50,6271,3714],{"class":220},[50,6273,6274],{"class":1547},"         \u002F\u002F (html: string) => string\n",[50,6276,6277,6280,6282],{"class":212,"line":250},[50,6278,6279],{"class":2821},"  scrollToTop",[50,6281,3714],{"class":220},[50,6283,6078],{"class":1547},[50,6285,6286,6289,6291],{"class":212,"line":644},[50,6287,6288],{"class":2821},"  isClient",[50,6290,3714],{"class":220},[50,6292,6293],{"class":1547},"          \u002F\u002F boolean\n",[50,6295,6296,6298,6300,6303],{"class":212,"line":650},[50,6297,3095],{"class":220},[50,6299,5562],{"class":220},[50,6301,6302],{"class":1565}," useHelpers",[50,6304,3345],{"class":2821},[5583,6306],{},[69,6308,6310],{"id":6309},"useseofallbacks","useSEOFallbacks",[10,6312,6313],{},"Provides fallback SEO meta tags when Yoast data is unavailable.",[201,6315,6317],{"className":3039,"code":6316,"language":3041,"meta":207,"style":207},"const { generateSEO } = useSEOFallbacks()\n\u002F\u002F generateSEO(product) → useSeoMeta()-compatible object\n",[104,6318,6319,6338],{"__ignoreMap":207},[50,6320,6321,6323,6326,6329,6331,6333,6336],{"class":212,"line":213},[50,6322,5453],{"class":3207},[50,6324,6325],{"class":220}," {",[50,6327,6328],{"class":2821}," generateSEO ",[50,6330,3095],{"class":220},[50,6332,5562],{"class":220},[50,6334,6335],{"class":1565}," useSEOFallbacks",[50,6337,3345],{"class":2821},[50,6339,6340],{"class":212,"line":228},[50,6341,6342],{"class":1547},"\u002F\u002F generateSEO(product) → useSeoMeta()-compatible object\n",[5583,6344],{},[69,6346,6348],{"id":6347},"useyoasthead","useYoastHead",[10,6350,6351],{},"Injects full Yoast SEO head tags for a product.",[201,6353,6355],{"className":3039,"code":6354,"language":3041,"meta":207,"style":207},"const { setYoastHead } = useYoastHead()\n\u002F\u002F setYoastHead(fullYoastHead: string) → void\n",[104,6356,6357,6375],{"__ignoreMap":207},[50,6358,6359,6361,6363,6366,6368,6370,6373],{"class":212,"line":213},[50,6360,5453],{"class":3207},[50,6362,6325],{"class":220},[50,6364,6365],{"class":2821}," setYoastHead ",[50,6367,3095],{"class":220},[50,6369,5562],{"class":220},[50,6371,6372],{"class":1565}," useYoastHead",[50,6374,3345],{"class":2821},[50,6376,6377],{"class":212,"line":228},[50,6378,6379],{"class":1547},"\u002F\u002F setYoastHead(fullYoastHead: string) → void\n",[10,6381,6382,6383,6386,6387,6389,6390,6393],{},"Requires the ",[104,6384,6385],{},"fullYoastHead"," field to be exposed by the ",[86,6388,5877],{}," plugin (",[104,6391,6392],{},"graphql\u002Fyoast.php",").",[5583,6395],{},[69,6397,5729],{"id":6398},"useauthtokens",[10,6400,6401,6402,6404],{},"Low-level JWT token management. Used internally by ",[104,6403,5588],{}," — you should not need to call this directly.",[201,6406,6408],{"className":3039,"code":6407,"language":3041,"meta":207,"style":207},"const {\n  getAuthToken,      \u002F\u002F () => string | null\n  setAuthToken,      \u002F\u002F (token: string) => void\n  clearAuthToken,    \u002F\u002F () => void\n} = useAuthTokens()\n",[104,6409,6410,6416,6426,6436,6446],{"__ignoreMap":207},[50,6411,6412,6414],{"class":212,"line":213},[50,6413,5453],{"class":3207},[50,6415,3443],{"class":220},[50,6417,6418,6421,6423],{"class":212,"line":228},[50,6419,6420],{"class":2821},"  getAuthToken",[50,6422,3714],{"class":220},[50,6424,6425],{"class":1547},"      \u002F\u002F () => string | null\n",[50,6427,6428,6431,6433],{"class":212,"line":239},[50,6429,6430],{"class":2821},"  setAuthToken",[50,6432,3714],{"class":220},[50,6434,6435],{"class":1547},"      \u002F\u002F (token: string) => void\n",[50,6437,6438,6441,6443],{"class":212,"line":250},[50,6439,6440],{"class":2821},"  clearAuthToken",[50,6442,3714],{"class":220},[50,6444,6445],{"class":1547},"    \u002F\u002F () => void\n",[50,6447,6448,6450,6452,6455],{"class":212,"line":644},[50,6449,3095],{"class":220},[50,6451,5562],{"class":220},[50,6453,6454],{"class":1565}," useAuthTokens",[50,6456,3345],{"class":2821},[1329,6458,6459],{},"html pre.shiki code .sJ14y, html code.shiki .sJ14y{--shiki-default:#C792EA}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .s0W1g, html code.shiki .s0W1g{--shiki-default:#BABED8}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":207,"searchDepth":228,"depth":228,"links":6461},[6462,6463,6464,6465,6466,6467,6468,6469,6470,6471,6472,6473,6474],{"id":5439,"depth":228,"text":5440},{"id":5587,"depth":228,"text":5588},{"id":5734,"depth":228,"text":5735},{"id":5815,"depth":228,"text":5816},{"id":5883,"depth":228,"text":5884},{"id":5953,"depth":228,"text":5954},{"id":6023,"depth":228,"text":6024},{"id":6094,"depth":228,"text":6095},{"id":6178,"depth":228,"text":6179},{"id":6239,"depth":228,"text":6240},{"id":6309,"depth":228,"text":6310},{"id":6347,"depth":228,"text":6348},{"id":6398,"depth":228,"text":5729},"Reference for all WooNuxt composables",{},{"icon":6478},"i-lucide-puzzle","\u002Fconfiguration\u002Fcomposables",{"title":3786,"description":6475},"3.configuration\u002F2.composables","WcoLoKGBbsXUSkhzRx9477rZ7V6xKMdt6YSvwyVMGIQ",{"id":6484,"title":6485,"body":6486,"description":6933,"extension":1365,"links":1366,"meta":6934,"navigation":6935,"path":6937,"seo":6938,"stem":6939,"__hash__":6940},"docs\u002F3.configuration\u002F3.performance.md","Performance & ISR",{"type":7,"value":6487,"toc":6921},[6488,6495,6499,6502,6512,6516,6522,6598,6602,6607,6649,6657,6661,6671,6688,6692,6698,6702,6711,6719,6722,6726,6732,6787,6791,6794,6907,6918],[10,6489,6490,6491,6494],{},"WooNuxt is optimized for performance at every layer. For large catalogs, ",[86,6492,6493],{},"Incremental Static Regeneration (ISR)"," lets you cache product pages at the CDN edge while still serving fresh data.",[69,6496,6498],{"id":6497},"isr-incremental-static-regeneration","ISR (Incremental Static Regeneration)",[10,6500,6501],{},"ISR pre-renders pages on first request and caches them for a configurable TTL. Subsequent requests are served from cache — zero cold-start latency — until the TTL expires and the page is regenerated in the background.",[10,6503,6504,6505,6508,6509,6511],{},"This is ideal for catalogs with ",[86,6506,6507],{},"10,000+ products"," where full ",[104,6510,5119],{}," would take too long.",[74,6513,6515],{"id":6514},"which-routes-use-isr","Which Routes Use ISR",[10,6517,6518,6519,221],{},"The following routes are ISR-enabled by default in ",[104,6520,6521],{},"woonuxt_base\u002Fnuxt.config.ts",[392,6523,6524,6534],{},[395,6525,6526],{},[398,6527,6528,6531],{},[401,6529,6530],{},"Route Pattern",[401,6532,6533],{},"Behavior",[410,6535,6536,6548,6559,6570,6582],{},[398,6537,6538,6543],{},[415,6539,6540],{},[104,6541,6542],{},"\u002Fproduct\u002F**",[415,6544,6545,6546],{},"ISR with ",[104,6547,2016],{},[398,6549,6550,6555],{},[415,6551,6552],{},[104,6553,6554],{},"\u002Fproduct-category\u002F**",[415,6556,6545,6557],{},[104,6558,2016],{},[398,6560,6561,6566],{},[415,6562,6563],{},[104,6564,6565],{},"\u002Fproducts",[415,6567,6545,6568],{},[104,6569,2016],{},[398,6571,6572,6578],{},[415,6573,6574,6577],{},[104,6575,6576],{},"\u002Fproducts\u002F**"," (pagination)",[415,6579,6545,6580],{},[104,6581,2016],{},[398,6583,6584,6592],{},[415,6585,6586,6006,6589],{},[104,6587,6588],{},"\u002Fcheckout",[104,6590,6591],{},"\u002Forder-summary",[415,6593,6594,6597],{},[104,6595,6596],{},"prerender: false"," (always live)",[74,6599,6601],{"id":6600},"configuring-isr-ttl","Configuring ISR TTL",[10,6603,5167,6604,6606],{},[104,6605,2016],{}," in your environment variables (value in seconds):",[201,6608,6610],{"className":1842,"code":6609,"filename":1838,"language":1844,"meta":207,"style":207},"# Cache product pages for 1 hour (default)\nCATALOG_ISR_TTL=3600\n\n# Cache for 24 hours (high-traffic stores with infrequent updates)\nCATALOG_ISR_TTL=86400\n\n# Cache for 5 minutes (stores with frequent price\u002Fstock changes)\nCATALOG_ISR_TTL=300\n",[104,6611,6612,6617,6621,6625,6630,6635,6639,6644],{"__ignoreMap":207},[50,6613,6614],{"class":212,"line":213},[50,6615,6616],{},"# Cache product pages for 1 hour (default)\n",[50,6618,6619],{"class":212,"line":228},[50,6620,1913],{},[50,6622,6623],{"class":212,"line":239},[50,6624,1574],{"emptyLinePlaceholder":29},[50,6626,6627],{"class":212,"line":250},[50,6628,6629],{},"# Cache for 24 hours (high-traffic stores with infrequent updates)\n",[50,6631,6632],{"class":212,"line":644},[50,6633,6634],{},"CATALOG_ISR_TTL=86400\n",[50,6636,6637],{"class":212,"line":650},[50,6638,1574],{"emptyLinePlaceholder":29},[50,6640,6641],{"class":212,"line":656},[50,6642,6643],{},"# Cache for 5 minutes (stores with frequent price\u002Fstock changes)\n",[50,6645,6646],{"class":212,"line":662},[50,6647,6648],{},"CATALOG_ISR_TTL=300\n",[1145,6650,6651],{},[10,6652,6653,6654,6656],{},"After updating a product in WooCommerce, the cache for that product's page will be stale until the TTL expires. Pair ISR with a ",[86,6655,478],{}," (configured in WooNuxt Settings) to trigger a full rebuild on important changes.",[74,6658,6660],{"id":6659},"requirements","Requirements",[10,6662,6663,6664,6667,6668,6670],{},"ISR requires a ",[86,6665,6666],{},"server runtime"," — it does not work with pure static output (",[104,6669,5119],{},"). Deploy with:",[125,6672,6673,6676,6679],{},[82,6674,6675],{},"Netlify (serverless functions)",[82,6677,6678],{},"Vercel (edge functions)",[82,6680,6681,6682,6684,6685,509],{},"Node.js server (",[104,6683,5134],{}," + ",[104,6686,6687],{},"node .output\u002Fserver\u002Findex.mjs",[69,6689,6691],{"id":6690},"image-optimization","Image Optimization",[10,6693,3013,6694,6697],{},[104,6695,6696],{},"@nuxt\u002Fimage"," to automatically optimize WooCommerce product images.",[74,6699,6701],{"id":6700},"configure-allowed-domains","Configure Allowed Domains",[10,6703,6704,6705,6708,6709,221],{},"You ",[86,6706,6707],{},"must"," list all image domains in ",[104,6710,1991],{},[201,6712,6713],{"className":1842,"code":5293,"filename":1838,"language":1844,"meta":207,"style":207},[104,6714,6715],{"__ignoreMap":207},[50,6716,6717],{"class":212,"line":213},[50,6718,5293],{},[10,6720,6721],{},"Multiple domains are comma-separated. Without this, images from those domains will not be optimized.",[74,6723,6725],{"id":6724},"netlify-image-cdn","Netlify Image CDN",[10,6727,6728,6729,6731],{},"When deploying to Netlify, ",[104,6730,6696],{}," automatically uses Netlify's Image CDN. The base config already ignores Netlify CDN URLs during prerendering to avoid double-optimization:",[201,6733,6735],{"className":3039,"code":6734,"language":3041,"meta":207,"style":207},"\u002F\u002F Already configured in woonuxt_base\u002Fnuxt.config.ts\nnitro: {\n  prerender: {\n    ignore: ['\u002F_netlify\u002Fimages']\n  }\n}\n",[104,6736,6737,6742,6751,6760,6779,6783],{"__ignoreMap":207},[50,6738,6739],{"class":212,"line":213},[50,6740,6741],{"class":1547},"\u002F\u002F Already configured in woonuxt_base\u002Fnuxt.config.ts\n",[50,6743,6744,6747,6749],{"class":212,"line":228},[50,6745,6746],{"class":1553},"nitro",[50,6748,221],{"class":220},[50,6750,3443],{"class":220},[50,6752,6753,6756,6758],{"class":212,"line":239},[50,6754,6755],{"class":1553},"  prerender",[50,6757,221],{"class":220},[50,6759,3443],{"class":220},[50,6761,6762,6765,6767,6769,6771,6774,6776],{"class":212,"line":250},[50,6763,6764],{"class":1553},"    ignore",[50,6766,221],{"class":220},[50,6768,3071],{"class":216},[50,6770,3074],{"class":220},[50,6772,6773],{"class":224},"\u002F_netlify\u002Fimages",[50,6775,3074],{"class":220},[50,6777,6778],{"class":216},"]\n",[50,6780,6781],{"class":212,"line":644},[50,6782,760],{"class":220},[50,6784,6785],{"class":212,"line":650},[50,6786,766],{"class":220},[69,6788,6790],{"id":6789},"build-performance","Build Performance",[10,6792,6793],{},"For SSG builds with large catalogs:",[201,6795,6797],{"className":3039,"code":6796,"filename":3035,"language":3041,"meta":207,"style":207},"export default defineNuxtConfig({\n  extends: ['.\u002Fwoonuxt_base'],\n  nitro: {\n    prerender: {\n      concurrency: 10,    \u002F\u002F Pages prerendered in parallel (default)\n      interval: 1000,     \u002F\u002F ms between batches (avoids WordPress rate limits)\n      failOnError: false, \u002F\u002F Continue build if a product page fails\n    },\n  },\n})\n",[104,6798,6799,6811,6829,6838,6847,6862,6877,6893,6897,6901],{"__ignoreMap":207},[50,6800,6801,6803,6805,6807,6809],{"class":212,"line":213},[50,6802,3049],{"class":3048},[50,6804,3052],{"class":3048},[50,6806,3055],{"class":1565},[50,6808,3058],{"class":2821},[50,6810,3061],{"class":220},[50,6812,6813,6815,6817,6819,6821,6823,6825,6827],{"class":212,"line":228},[50,6814,3066],{"class":216},[50,6816,221],{"class":220},[50,6818,3071],{"class":2821},[50,6820,3074],{"class":220},[50,6822,3077],{"class":224},[50,6824,3074],{"class":220},[50,6826,3082],{"class":2821},[50,6828,3085],{"class":220},[50,6830,6831,6834,6836],{"class":212,"line":239},[50,6832,6833],{"class":216},"  nitro",[50,6835,221],{"class":220},[50,6837,3443],{"class":220},[50,6839,6840,6843,6845],{"class":212,"line":250},[50,6841,6842],{"class":216},"    prerender",[50,6844,221],{"class":220},[50,6846,3443],{"class":220},[50,6848,6849,6852,6854,6857,6859],{"class":212,"line":644},[50,6850,6851],{"class":216},"      concurrency",[50,6853,221],{"class":220},[50,6855,6856],{"class":3632}," 10",[50,6858,3714],{"class":220},[50,6860,6861],{"class":1547},"    \u002F\u002F Pages prerendered in parallel (default)\n",[50,6863,6864,6867,6869,6872,6874],{"class":212,"line":650},[50,6865,6866],{"class":216},"      interval",[50,6868,221],{"class":220},[50,6870,6871],{"class":3632}," 1000",[50,6873,3714],{"class":220},[50,6875,6876],{"class":1547},"     \u002F\u002F ms between batches (avoids WordPress rate limits)\n",[50,6878,6879,6882,6884,6888,6890],{"class":212,"line":656},[50,6880,6881],{"class":216},"      failOnError",[50,6883,221],{"class":220},[50,6885,6887],{"class":6886},"sbqyR"," false",[50,6889,3714],{"class":220},[50,6891,6892],{"class":1547}," \u002F\u002F Continue build if a product page fails\n",[50,6894,6895],{"class":212,"line":662},[50,6896,3640],{"class":220},[50,6898,6899],{"class":212,"line":668},[50,6900,3645],{"class":220},[50,6902,6903,6905],{"class":212,"line":674},[50,6904,3095],{"class":220},[50,6906,3098],{"class":2821},[10,6908,6909,6910,6913,6914,6917],{},"Increase ",[104,6911,6912],{},"concurrency"," if your WordPress server can handle more parallel requests. Lower ",[104,6915,6916],{},"interval"," if you hit WordPress rate limiting.",[1329,6919,6920],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .s-wAU, html code.shiki .s-wAU{--shiki-default:#F07178}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .s6cf3, html code.shiki .s6cf3{--shiki-default:#89DDFF;--shiki-default-font-style:italic}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html pre.shiki code .s0W1g, html code.shiki .s0W1g{--shiki-default:#BABED8}html pre.shiki code .sx098, html code.shiki .sx098{--shiki-default:#F78C6C}html pre.shiki code .sbqyR, html code.shiki .sbqyR{--shiki-default:#FF9CAC}",{"title":207,"searchDepth":228,"depth":228,"links":6922},[6923,6928,6932],{"id":6497,"depth":228,"text":6498,"children":6924},[6925,6926,6927],{"id":6514,"depth":239,"text":6515},{"id":6600,"depth":239,"text":6601},{"id":6659,"depth":239,"text":6660},{"id":6690,"depth":228,"text":6691,"children":6929},[6930,6931],{"id":6700,"depth":239,"text":6701},{"id":6724,"depth":239,"text":6725},{"id":6789,"depth":228,"text":6790},"Caching strategies and ISR configuration for large WooCommerce catalogs",{},{"icon":6936},"i-lucide-gauge","\u002Fconfiguration\u002Fperformance",{"title":6485,"description":6933},"3.configuration\u002F3.performance","EHr8AwBtr_HQhcZ4dXHtInQnYWGIW4xjZ3gQcGOOYMA",1777753060962]