Saabaai

A refined WooCommerce theme for perfume houses, fragrance boutiques and beauty brands. Thank you for your purchase — this guide takes you from upload to a finished store.

If something in this guide is unclear, contact us through the Support tab on the item page. Please include your WordPress, WooCommerce and PHP versions.

Requirements

SoftwareMinimumRecommended
WordPress6.4Latest
WooCommerce9.0Latest (tested up to 11.2)
PHP7.48.2 or newer
PHP memory limit128 MB256 MB
Max execution time60 s120 s

What's in the package

FileDescription
saabaai.zipThe theme — upload this in WordPress.
saabaai-child.zipOptional child theme for your own customisations.
plugins/saabaai-core.zipCompanion plugin (also bundled inside the theme and installable with one click).
documentation/This guide.
licensing/GPL license and font licenses.

Installation

  1. In WordPress go to Appearance → Themes → Add New → Upload Theme, choose saabaai.zip, click Install Now and then Activate.
  2. You are taken to Appearance → Saabaai setup. Click Install / Activate for WooCommerce and Saabaai Core.
  3. Import the demo (next section) or start building with the Customizer.
Saabaai setup screen
Seeing “The link you followed has expired” when uploading? Your server's upload limit is too small. Upload the theme folder via FTP to wp-content/themes/ instead, or ask your host to raise upload_max_filesize to 16 MB.

Demo import

Go to Saabaai → Demo import and click Import demo content. The importer runs in small steps (so it works on modest hosting) and adds:

It also sets the cart and checkout pages to the classic WooCommerce layout so every detail follows the theme design, turns off WooCommerce's “coming soon” mode and enables “Cash on delivery” so you can test checkout.

Demo importer

The demo store is set up for Nepal: prices in Nepalese rupees (shown as Rs., no decimals), store address in Kathmandu and selling to Nepal. Change any of this in WooCommerce → Settings → General (store address, selling locations, currency). To prefer the ₨ sign over Rs., add add_filter( 'saabaai_core_npr_symbol', '__return_false' ); to your child theme.

Changed your mind? Remove demo content deletes everything the importer created.

Customizer options

Open Appearance → Customize. All options preview live.

Panel / sectionWhat you can change
Site identityLogo (recommended 420 × 96 px, transparent PNG or SVG via a plugin), site title, icon.
ColorsOne-click presets — Pure (clean white, default), Ivory (warm cream) and Noir (dark luxury) — then fine-tune accent, text, page background, cards & panels, dark sections & footer and sale badge. Any dark page background switches the theme to its dark mode automatically.
Theme options → TypographyHeading and body fonts (bundled locally — no Google requests), base size, uppercase headings.
Theme options → LayoutContainer width, corner radius for buttons, inputs and cards.
Theme options → HeaderCentered or left logo, sticky header, transparent header on the homepage, search/account/wishlist icons, announcement bar text, link and dismiss button.
Theme options → Shop & productProducts per row and per page, filter drawer or left sidebar, shop header image, hover image, key notes on cards, free-shipping threshold, size swatches, sticky add-to-cart, reassurance list, related products count.
Theme options → BlogGrid or list archive, sidebar on single posts.
Theme options → Footer & socialAbout text, copyright ({year} placeholder), payment badges, social links.
HomepageEvery homepage section — see below.

Homepage sections

The homepage appears when Settings → Reading uses “A static page” as the homepage. Sections, in order:

SectionNotes
Hero sliderUp to 3 slides with image (2000 × 1100 px, keep the left side calm for text), label, title, text, button and text colour (dark text for light images, light text for dark images). Autoplay seconds and height.
Service highlightsFour short promises. They are reused on product pages under the add-to-cart button.
Scent familiesProduct categories with their images (set images in Products → Categories). Leave the ID field empty to show the first five.
Product tabsBestsellers, New arrivals, On sale.
Product spotlightOne product with its notes pyramid. Defaults to the first featured product.
Brand storyImage, text, three figures and a link.
Promo bannerBackground image, text, button and optional countdown end date.
Page contentAnything you add to the Home page in the block editor appears here.
TestimonialsEntries from Saabaai → Testimonials.
JournalLatest three posts.
NewsletterSee Newsletter.

Developers can reorder sections with the saabaai_home_sections filter.

Menu locations: Primary, Secondary (right of the logo), Mobile (falls back to Primary), Footer column 1–3 and Footer bottom links. The footer column headings use the menu names.

Creating a mega menu

  1. In Appearance → Menus open Screen Options and tick CSS Classes.
  2. Add the class mega-menu to a top-level item.
  3. Its second-level items become column headings and third-level items the links in each column.

Shop & filters

Add filters to the Shop filters widget area (Appearance → Widgets): Filter Products by Price, Filter Products by Attribute, Product Categories and Active Product Filters work best. Choose whether they appear in a slide-out drawer or a left sidebar in Customize → Theme options → Shop & product.

The shop header uses the Shop page excerpt as its description (enable “Excerpt” in the editor's options), category headers use the category description and image.

The free-shipping progress bar in the bag and on the cart page uses the threshold from the Customizer. Set the same amount in your WooCommerce “Free shipping” method.

Products & fragrance notes

Edit a product and open the Fragrance tab in the Product data box (requires Saabaai Core):

Use a product attribute such as Size for variations; the theme shows the options as buttons. Use 4:5 portrait images (e.g. 1200 × 1500 px) for the best result, and add a second gallery image for the hover effect.

Product page

Wishlist & quick view

Both are part of Saabaai Core and can be switched off in Saabaai → Settings. The wishlist is stored in the visitor's browser and, for logged-in customers, saved to their account. The wishlist page is created automatically and contains the [saabaai_wishlist] shortcode.

Live search, quick view, bag drawer

Testimonials

Saabaai → Testimonials → Add testimonial: the title is the customer name, the content is the quote; set the rating and a caption (e.g. the fragrance) in the sidebar. Drag order with the Order field.

Newsletter

In Customize → Homepage → Newsletter paste your provider's form action URL and the email field name (Mailchimp: EMAIL). Without an action URL the form shows a demo thank-you message.

Block patterns & styles

In the block editor open the inserter → Patterns → Saabaai: About, Contact, FAQ accordion and Promo. Block styles: Eyebrow (paragraph), Arch (image) and Display italic (heading). Page templates: Full width and Canvas (no title).

Translation & RTL

Translation templates are in saabaai/languages/saabaai.pot and saabaai-core/languages/saabaai-core.pot. Translate with Loco Translate or Poedit and save the files as saabaai-{locale}.mo in wp-content/languages/themes/. RTL stylesheets load automatically for right-to-left languages.

Child theme

Install and activate saabaai-child.zip if you plan to change code. Add CSS to its style.css and PHP to its functions.php; updates to Saabaai never overwrite them. Customizer settings are stored per theme, so set up the child theme before customising, or use a plugin such as “Customizer Export/Import”.

Developer hooks

HookTypePurpose
saabaai_home_sectionsfilterArray of homepage section slugs and their order.
saabaai_home_product_tabsfilterTabs of the product section (label + shortcode).
saabaai_defaultsfilterDefault values of every theme option.
saabaai_customizer_schemafilterAdd or change Customizer sections and fields.
saabaai_dynamic_cssfilterCSS custom properties output.
saabaai_new_badge_daysfilterDays a product shows the “New” badge (default 14).
saabaai_free_shipping_thresholdfilterOverride the free-shipping amount.
saabaai_trust_itemsfilterReassurance list on product pages.
saabaai_payment_badgesfilterFooter payment labels.
saabaai_open_cart_on_addfilterOpen the bag drawer after AJAX add to cart.
saabaai_wide_pagefilterUse the wide container on a page.
saabaai_product_card_actionsactionIcon buttons on product cards.
saabaai_after_pageactionMarkup printed before wp_footer() (drawers, sticky bars).
// Example: hide the journal section and show 12 products per tab.
add_filter( 'saabaai_home_sections', function ( $sections ) {
	return array_values( array_diff( $sections, array( 'journal' ) ) );
} );

WooCommerce is adapted entirely through hooks — the theme contains no WooCommerce template overrides, so WooCommerce updates never leave outdated templates behind.

Troubleshooting

The homepage shows my latest posts

Set Settings → Reading → Your homepage displays to “A static page” and choose your Home page.

Cart and checkout look different from the demo

New WooCommerce stores use the block-based cart and checkout. To match the demo, edit the Cart page and replace its content with a Shortcode block containing [woocommerce_cart], and the Checkout page with [woocommerce_checkout]. The demo importer does this for you.

Product images are blurry or cropped oddly

Regenerate thumbnails with the “Regenerate Thumbnails” plugin after activating the theme, and use 4:5 portrait images.

The demo import stops

Raise PHP max_execution_time to 120 and memory_limit to 256M, reload the page and click Import again — finished steps are skipped.

Credits & licenses

Changelog

1.0.0 — Initial release.