વર્ણન
TitanCart is a complete storefront in one plugin: catalog, cart, checkout, orders, customers, shipping, tax and reporting. It runs on its own database tables and its own REST API rather than bending WordPress posts and meta into a shopping cart, which is why it stays fast as a catalog grows.
No license key is required. TitanCart Lite is free and GPL, and it never contacts a remote server.
What you get
- Products — simple and variable products, categories, product filters, attributes, image galleries, digital downloads.
- Cart and checkout — a real cart session, guest checkout, order notes.
- Payments — Stripe, plus cash on delivery, bank transfer and cheque.
- Shipping — flat rate, free shipping, and table-based rates with zones and conditions.
- Tax — full tax classes, zones and rate rules. Not a stripped-down version; tax is a legal requirement, not an upsell.
- Orders — order management, statuses, invoices, fulfilment and shipment tracking.
- Customers — accounts, address book, order history, customer groups.
- Reviews — product reviews with moderation.
- Wishlists, sitemap, SEO output (meta tags, canonical URLs, Open Graph, JSON-LD product schema), GDPR tools and age verification.
- Import and export — CSV import and export, including a WooCommerce migration tool.
- Prism — a free companion storefront theme built for TitanCart, available as a free download from the TitanCart marketplace at market.titancart.io.
Built to be portable
TitanCart’s cart, checkout, order and pricing logic have no WordPress function calls inside them. WordPress is a thin hosting layer over a self-contained engine. That is an architectural choice, not marketing: it is what keeps the query count low and the upgrade path open.
Privacy and external services
TitanCart Lite makes no outbound connections of any kind on its own. It contains no license check, no update checker, no analytics, no telemetry, and no remote code installer. Updates arrive through WordPress.org like any other plugin.
A small number of features contact a third party only after you configure them, using credentials you supply. Each is documented in the External services section below. None is enabled by default.
Source code
The admin interface, admin/build/titancart-admin.js, is hand-written JavaScript and is itself the source code: there is no build step, no transpiler, no JSX, no bundler and no minification anywhere in this plugin. The directory name is historical. The same is true of every other JavaScript and CSS file shipped — what you read in the ZIP is exactly what the developer wrote and maintains.
External services
TitanCart Lite connects to the following external services. Every connection is off by default and happens only after the site owner configures the feature with their own credentials or explicitly triggers it with a click.
Stripe (payment processing)
- What it is: card payment processing by Stripe, Inc.
- What it is used for: charging customers at checkout when the store owner has created a Stripe payment method with their own API keys.
- What data is sent, and when: when a Stripe method is enabled, the checkout page loads Stripe’s
Stripe.jsfromjs.stripe.com(a Stripe requirement for PCI compliance) and card details entered by the customer go directly from the customer’s browser to Stripe — they never touch the store’s server. The server then exchanges payment intents/confirmations with Stripe’s API (order amount, currency, and the payment reference). - Terms and privacy: Stripe Services Agreement, Stripe Privacy Policy.
Google reCAPTCHA (spam and abuse protection)
- What it is: Google’s reCAPTCHA v2/v3 service.
- What it is used for: protecting the login, registration, checkout, review and contact surfaces from bots — only if the store owner enables the reCAPTCHA feature and supplies their own site key and secret.
- What data is sent, and when: on pages with a protected form, Google’s
api.jsloads fromwww.google.comin the visitor’s browser (Google’s script collects the signals it uses for its bot score — see its privacy policy); on submit, the server sends the response token, the site secret and the visitor’s IP address to Google’ssiteverifyendpoint to obtain the verdict. - Terms and privacy: Google Terms of Service, Google Privacy Policy.
Google Maps Places (address autocomplete)
- What it is: the Google Maps JavaScript API with the Places library.
- What it is used for: suggesting street addresses as a customer types on the checkout and account address forms — only if the store owner turns on Address autocomplete in checkout settings and supplies their own Google Maps API key. Off by default; nothing loads without the key.
- What data is sent, and when: on the checkout and account pages only, the visitor’s browser loads
maps.googleapis.com/maps/api/js(keyed with the owner’s API key) and sends the characters typed into the address field to Google to receive suggestions. The store’s server never contacts Google for this feature. - Terms and privacy: Google Maps Platform Terms, Google Privacy Policy.
YouTube and Vimeo (product video embeds)
- What it is: the public video players of YouTube (Google) and Vimeo.
- What it is used for: showing a product video on the product page when the store owner has pasted a YouTube or Vimeo link into that product’s video field. No video is embedded unless the owner adds one.
- What data is sent, and when: the product page renders a thumbnail from
img.youtube.comand, when the visitor clicks play, an embedded player fromwww.youtube.comorplayer.vimeo.comin the visitor’s browser; those providers receive the visitor’s request as with any embedded video. In the admin product editor, a thumbnail preview is fetched fromimg.youtube.comfor the link the owner entered. Videos hosted on the store’s own server are played directly and involve no third party. - Terms and privacy: YouTube Terms of Service, Google Privacy Policy, Vimeo Terms of Service, Vimeo Privacy Policy.
Remote images during CSV import
- What it is: standard HTTP downloads performed by WordPress itself.
- What it is used for: when the store owner runs a product CSV import whose rows contain image URLs, WordPress downloads those images into the media library.
- What data is sent, and when: an HTTP GET to each image URL the owner provided in their own file, at import time only.
Demo content for the Prism theme (market.titancart.io)
- What it is: ready-made demo packages (products, categories, attributes and banner images) published by TitanCart for its free Prism storefront theme, which is a separate download.
- What it is used for: letting a store owner who has installed Prism fill an empty store with matching sample content from Theme Options Demo content Install demo, and later reinstall, clear or remove it.
- What data is sent, and when: only when the owner clicks Install, Switch or Reinstall does the server fetch the list of available demos and then the chosen package (a JSON file plus its images) from
market.titancart.ioover HTTPS — ordinary GET requests carrying no store data. Opening the Theme Options page does not contact the service. Nothing is fetched on sites without Prism. - Terms and privacy: TitanCart Privacy Policy.
The product page’s optional share buttons are ordinary links to Facebook, X, Pinterest and LinkedIn share pages; nothing is loaded from those sites and no request is made unless the visitor clicks one.
No other external connections exist in TitanCart Lite. Payment gateways beyond Stripe (PayPal, Square, Authorize.net), live carrier shipping rates (USPS, FedEx), social sign-in (Google, Facebook, Apple) and the TitanCart extensions catalog are features of TitanCart Pro, are not present in this plugin’s code, and are documented in the Pro edition’s own materials.
સ્થાપન
- In your WordPress admin, go to Plugins Add New and search for “TitanCart”.
- Click Install Now, then Activate.
- Open TitanCart Settings to set your store details, currency, payment, shipping and tax. There is no setup wizard; the store setup checklist at https://help.titancart.io/docs/store-setup-checklist/ walks through the order.
- Optionally install the free Prism storefront theme, available from the TitanCart marketplace at market.titancart.io.
No account, key or sign-up is required.
એફએક્યુ (FAQ)
-
Do I need a license key?
-
No. TitanCart Lite is free, GPL-licensed, and fully functional without a key. It never asks for one and never phones home.
-
Will it work alongside WooCommerce?
-
TitanCart does not use, extend or depend on WooCommerce, and it stores nothing in WooCommerce’s tables. Running both at once is not recommended simply because two storefronts on one site confuses customers, not because they conflict technically. There is a built-in WooCommerce importer to migrate your catalog across.
-
Does it slow my site down?
-
TitanCart uses its own indexed tables instead of
wp_postmeta, so catalog queries do not scale with your meta table. The admin is a single-page app that loads once and then talks to a REST API. -
What is the difference between Lite and Pro?
-
Lite is a complete, working store: products, cart, checkout, Stripe, shipping, tax, orders, customers, reviews, import/export and SEO. Pro adds promotions, coupon codes and discount rules, loyalty rewards, gift cards, product bundles and options, email campaigns, returns (RMA), advanced reporting, additional payment gateways, live carrier shipping rates, the external REST API, and the first-party extension suite.
Everything in Lite stays in Lite. Pro is additional capability, never a paywall in front of something that used to be free.
-
Where is my data stored?
-
In your own database, in tables prefixed
wp_tc_. Nothing is stored off-site. Uninstalling is a clean removal.
સમીક્ષાઓ
આ પ્લગઇન માટે કોઈ સમીક્ષાઓ નથી.
ફાળો આપનાર & ડેવલપર્સ
“TitanCart Lite” ને તમારી ભાષામાં અનુવાદ કરો.
વિકાસમાં રસ ધરાવો છો?
કોડ બ્રાઉઝ કરો, જોવોઅસ્વીએન રેપોઝિટરીમાંથી,અથવા સબ્સ્ક્રાઇબ કરોડેવલપમેન્ટ દ્વારાઆરઅસઅસ.
ચેન્જલૉગ
0.2.68
- Fixed: Sales Active Carts opening a cart showed “Cart Items (0)” and a $0 subtotal for every cart; the detail page now lists the cart’s items with their product codes.
- Fixed: guest rows on Sales Active Carts had no label; they now read “Session” followed by the session’s short id.
0.2.67
- Fixed: every TitanCart page (shop, product, cart, checkout, account, search) told WordPress it was the blog index — the page carried the “blog” body class, and on a store whose homepage shows the latest posts, themes showed the blog header and SEO plugins printed the homepage title on every product page. TitanCart pages are now plain pages to WordPress.
- Fixed: the “View all results” link in the search suggestions dropdown pointed at the site root; it now uses the store’s search page, so it works when WordPress is installed in a sub-folder.
- Fixed: product, attribute and order-item names read by the order confirmation page, the printable invoice, the CSV import / export and the API always used English; they now follow the store’s language (WPML, Polylang or the WordPress site language, limited to the languages set up under Settings Languages).
0.2.66
- Added: back-in-stock e-mails go out by themselves. When a product that shoppers signed up for comes back into stock — through the product editor, Bulk Edit, a CSV import, a returned order or an order edit — the people on its Waitlist tab receive the “Back in Stock Notification” e-mail, oldest sign-ups first. Two new settings under Settings General Settings Catalog: “Notify the waitlist automatically” (on) and “Back-in-stock e-mails per restock” (match the quantity restocked, at least 10). Notify All on the Waitlist tab still e-mails everyone waiting.
- Changed: the low-stock alert now fires from every way stock can change — typing a new quantity in the product editor, Bulk Edit, a CSV import and the WooCommerce import — not only from sales and order edits. When several products fall into the low-stock band in one update you receive one “Low Stock Digest” e-mail listing them instead of one e-mail per product (new template under Settings Notifications Templates).
- Fixed: since 0.2.65 the “Back in Stock Notification” e-mail greeted the shopper with the raw placeholder {customer_first_name}; the name is filled in again (“there” when the sign-up had no name).
0.2.65
- Added: a shipment e-mail. Tick “E-mail the customer about this shipment” when you create a shipment under Sales Fulfillment and the customer receives the “Order Shipped” e-mail with the items in that shipment, the carrier, the tracking number and a Track button. Changing the tracking number of an existing shipment with the box ticked sends “Tracking information updated”. Both are templates under Settings Notifications Templates.
- Changed: every remaining e-mail now renders its template under Settings Notifications Templates — the gift card, the return e-mails (requested, approved, declined, completed), the account e-mails, the back-in-stock, low-stock and new-review notices. No row is marked “Built-in layout” any more; editing the subject or body changes what is sent. Templates you edited keep your edits; untouched ones move to the branded layout with your logo, colour and company footer.
- Added: the Department E-mail Addresses under Settings General Settings Company now work. The user department is the From address of the account e-mails; the support department becomes the Reply-To of every customer e-mail and is available as the {support_email} placeholder; the newsletter Reply-To is set on every campaign.
- Added: “Account details were updated” (Settings Notifications, Account group) — sent when a customer changes their own details under My Account. Off until you switch it on.
- Added: “Live shipping rates failed” (System group) — when USPS, UPS or FedEx rejects a live-rate request, the store administrator gets at most one e-mail per carrier per hour and every failure is listed under Settings System Logs. Off until you switch it on.
- Changed: the e-mail to the administrator about an order status change has its own subject, so it is no longer threaded under the customer’s e-mail in Gmail.
- Fixed: the “New return request” e-mail went to the order department; it now goes to the site administrator address like every other administrator notice.
0.2.64
- Changed: every order e-mail (confirmation, new-order notice to the administrator, order received while a card payment is authorised or under review, status changes to the customer and the administrator, download links) is now sent from its template under Settings Notifications Templates. Editing the subject or body there changes what is sent; before, the edits were saved but the mails used a fixed layout.
- Changed: the status e-mail templates are now named after your order statuses (Pending, Processing, On Hold, Completed, Cancelled, Refunded, Failed) with a generic “other statuses” template for statuses you add. Existing templates keep any edits you made.
- Added: template placeholders for the items table, totals, addresses, payment instructions, download links, invoice link, payment and shipping method, tracking number, and more; the Templates tab lists them.
- Fixed: the “View your order” button in order e-mails pointed at a page that does not exist. It now opens the order under My Account Orders.
- Fixed: saving a template no longer drops the document type line at the top of the body.
- Changed: the Test Email tab and the template editor’s “Send test” now send the same template the store sends, with sample order data.
0.2.63
- Fixed: a review posted by a shopper who was not signed in failed with a server error after it had been saved: the review reached the Pending list but the shopper saw an error instead of the confirmation, and the “New product review” e-mail to the store administrator was not sent. Affected 0.2.60 through 0.2.62.
0.2.62
- Fixed: after posting a review on a store that moderates reviews, coming back to the product page said “You have already submitted a review for this product.” as if the review had been refused. The page now says the review is awaiting approval while it is pending and “You have already reviewed this product.” once it is published, and the message shown right after submitting says the same.
- Changed: with “Only buyers can review” on, a signed-in customer who has no completed order for the product now sees “Only customers who bought this product can review it.” in place of the form, instead of the form and a refusal on submit.
0.2.61
- Fixed: the four cards above the admin Products list now count the whole store (or the whole filtered set when a search, status or category filter is on) – before, “In Stock”, “Low Stock” and “Inactive” counted only the page on screen beside a store-wide total, and the percentage chips on three of them were fixed text, not measurements. Each card now says what its number is made of instead.
- Fixed: the Dashboard’s Low Stock Alerts list and the low-stock report no longer list products whose inventory is not tracked – those show as Unlimited everywhere else.
0.2.60
- Changed: Settings – Notifications now does what it shows. Every e-mail TitanCart sends – order placed, order status changes, download links, back in stock, low stock, new account, account activated or deactivated, new review, and (Pro) gift card delivery and returns – is switched on or off by its toggle, and setting a template to Disabled stops that mail. Events that nothing could ever send (group membership, review replies, gift card status changes, shipping errors, password recovery – which WordPress sends itself) have left the page.
- New: an administrator copy of the order status change e-mails, a new-account notice, account activated and deactivated notices, and a new-review notice, all rendered from the editable admin templates. The administrator copies are off until you switch them on, so an upgrade sends nothing new.
- Fixed: saving an e-mail template no longer strips its HTML wrapper, and “Send test” on a template now sends that template’s edited subject and body with sample values instead of the built-in layout.
- Changed: the “Site administrator e-mail address” under General Settings – Company is now where admin notifications go (blank = the WordPress admin e-mail); the “(coming soon)” label is gone.
0.2.59
- Fixed (Pro): the return deadline shown on the My Account returns page was a day early in stores west of UTC. It now shows the right day, and the return window runs through the end of that day in the store’s timezone instead of ending at the hour the order was placed, so a customer who reads the date can rely on it.
0.2.58
- Changed (Pro): the Authorize.net card form at checkout now behaves like the Stripe and Square forms – the card number groups into fours as you type and shows the card brand, expiry is one MM / YY field, and a wrong number, a past expiry or a short security code is flagged under its own field before you place the order instead of after. Card details still go straight from the browser to Authorize.net.
0.2.57
- Fixed: Age Verification’s “Hide product entirely” now hides. For a visitor who has not verified an age that meets a product’s requirement, restricted products are left out of the shop, category, brand and search listings and the filter counts; a direct link still shows the age gate. Before, this option behaved exactly like “Redirect to homepage”.
- Fixed: a product that is age-restricted only through its category now shows the age gate on its product page. Before, the page showed no gate while adding the product to the cart was refused, so a visitor without the site-wide gate had no way to verify.
0.2.56
- Fixed: the product editor’s two Shipping-tab controls now change what is charged. “Free shipping” leaves the product out of the shipping calculation (its price, weight and count no longer feed the rate tables or the carrier quote), and when every item in the cart that requires shipping ships free, every shipping method is offered at $0. “Per-item surcharge” is added per unit to every shipping method the shopper can pick. Before, both were saved and ignored.
- Fixed: a product with “Requires shipping” unticked (a service, a virtual good) no longer counts towards the price, weight and item-count bands of a rate table when it shares the cart with a physical product.
- Changed: the installation steps in this readme now point at the store setup checklist on help.titancart.io instead of a first-run step that did not exist.
0.2.55
- Changed: TitanCart Lite no longer shows controls for coupon codes it cannot create – the promo-code box on the cart page, the Promotions tile under the dashboard’s Quick Actions, the Promotions card in General Settings and the Coupons step of the WooCommerce migration are gone from Lite. Coupon codes are part of Promotions, a Pro feature. Pro stores are unchanged.
0.2.54
- Changed: the product page’s Reviews tab now shows the full review list – review titles, the Verified Purchase badge, helpful / not-helpful votes, a sort control (newest, oldest, highest, lowest, most helpful) and page links – instead of a cut-down list of the newest reviews. It is the [titancart_reviews] shortcode, so a theme can place the same list elsewhere.
- Fixed: the review list’s sort control did nothing (the page reloaded with the same order); it now sorts, and opening a reviews page or sort link lands on the Reviews tab instead of the Description tab.
- Fixed: the review summary on the product page and the reviews API’s stats are computed live from the approved reviews, so they always agree with the review count under the product name.
- Fixed: importing reviews (Tools – Import, type Reviews, and the WooCommerce importer) now recalculates each product’s average rating and review count; before, product cards, the Top Rated sort and the Rating filter kept the pre-import values until a review on that product was moderated.
0.2.53
- Changed: “Allow guest reviews” (Customer Product Reviews settings) now reaches the product page – with it on, a visitor who is not signed in gets the review form with a required name and an optional e-mail (shown only to the merchant); with it off, or while “Only buyers can review” is on, the form asks them to log in. Before, the page always asked for a login whatever the setting said, so “Check for duplicate IP addresses” (guest reviews only) could never apply.
- Fixed: reviewer names on the product page’s Reviews tab – every reviewer printed “Anonymous”; the tab now shows the customer’s first name and last initial, or the name a guest gave.
- Changed: the reviews CSV import keeps the Name and Email columns for a review whose e-mail matches no customer, the WooCommerce importer keeps the comment author for reviews without a matching customer, and the reviews CSV export fills Reviewer Name / Reviewer Email for guest reviews.
- Fixed: a signed-in account that had no TitanCart customer record yet was treated as a guest when posting a review.
- Fixed: the reviews CSV import (Tools – Import, type Reviews) looked products up by a column that does not exist, so no row ever imported; it now matches the Product Code column against the product’s own code.
0.2.52
- Changed: “Enable product reviews” (Customer Product Reviews settings) off now hides the Reviews tab, the review form and the star line on the product page; existing reviews, ratings and the moderation queue are kept. Turning the Customer Product Reviews extension off hides the tab the same way (it used to leave the tab in place with the raw shortcode text where the form should be).
- Changed: “Reviews per page” is now honoured – the product page shows that many of the newest approved reviews (10 by default; it always showed five), and the reviews API pages by the same number.
- Changed: the review settings’ “Display” group (review form style, image uploads, customer location) is removed – nothing collected those yet; they return with the review photos build.
0.2.51
- Fixed: a quantity-based price now follows the quantity in the cart. Adding to a product already in the cart, changing the quantity on the cart page and signing in all re-check the price for the quantity (and customer group) the line ends up with, so a “10+” price is charged for ten units however they got there – and is no longer kept when the quantity drops below ten.
- Changed: the product editor’s quantity-pricing “Customer group” list now shows the store’s own Customer Groups by name. “Guests” is no longer offered (a signed-out shopper could never match it), and a group the list cannot name is kept as it is instead of being reset to “All customers” on save.
- Changed: the “File upload” option type is no longer offered when creating a product option, since the store does not collect the file yet; existing options of that type still load and save, and the product page no longer shows a file picker for them.
- Changed: the product editor’s Availability “User groups” checkboxes are hidden until product visibility by customer group is built; they were never saved.
0.2.50
- Changed: the Products list now colours its “Low Stock” badge and its In Stock / Low Stock cards at the Catalog “Low stock notification threshold” (5 while that setting is 0, as before), and the Revenue Reports Products tab uses the same number – so the list, the dashboard and the reports agree on what “low” means.
- Fixed: products with Track Inventory switched off now show “Unlimited” in the Products list instead of “Out of Stock” when their quantity is 0.
0.2.49
- New: the “Product low stock alert” under Settings > Notifications is now really sent. When a sale or an order edit takes a tracked product down to the Catalog “Low stock notification threshold”, the store administrator receives the “Product Low Stock Notification” e-mail (editable under Settings > Notifications > Templates) – once per product each time it drops into the band. Stores that set a threshold will start receiving it; switch the event off under Settings > Notifications if you only want the dashboard card and the log.
- Changed: the Waitlist tab’s Notify button now sends the “Back in Stock Notification” template (HTML, greeting by name, a button to the product page, in the store’s default language) instead of a fixed plain-text message, and respects the “Product is back in stock” switch and the template’s Active/Disabled status. When nothing can be sent the tab says why.
- Under the hood: these two events are the first to read the Settings > Notifications toggles and templates; every other notification still uses its built-in layout for now.
0.2.48
- Changed (Pro): the RMA return period now counts from the latest ship date you recorded on the order’s shipments in Fulfillment, and from the order date only when no ship date was recorded – so a customer gets the full period from the day the parcel actually left. The setting’s hint, which used to speak of “delivery”, now says exactly that.
- Fixed: the Catalog “Download link TTL (hours)” hint described a per-product control that does not exist. It now points to the real one (the product’s own Download link TTL on its Downloads tab) and says that 0 means links never expire.
0.2.47
- Fixed: the “Payment instructions” box on a payment method’s General tab is now shown where it always said it would be – in the Payment Instructions card on the thank-you page and on the order in the customer’s account, above any bank details or cheque address the method itself prints. The default Cash on Delivery method ships with “Please have the exact amount ready.” in that box, so stores that kept it will see that sentence appear; clear the box if you do not want it.
- New: the order confirmation e-mail carries the same Payment Instructions block, so Bank Transfer and Check customers receive the account details or mailing address in the e-mail they keep.
- Fixed: bank-transfer and cheque details keep their list layout on the thank-you page (the label / value pairs were being flattened to plain text).
0.2.46
- New (Pro): an Authorize.net webhook. The Signature Key field on the gateway’s Configure tab now does what its hint always promised: with it saved and the Webhook URL shown in the editor registered in the Merchant Interface, a held-for-review payment you approve or decline, and a payment you capture or void there, update the order in seconds instead of on the hourly check – and a refund made in the Merchant Interface is now recorded on the order (full refunds move it to Refunded), which was never reported back before. Optional: without it the hourly check behaves exactly as in 0.2.45.
0.2.45
- Fixed: an order paid with a card that was only authorised – Square “Delayed capture”, Authorize.net “Authorize Only”, or a payment the gateway is holding for its own fraud review – no longer completes as if it were paid. The order now waits in On Hold with its stock reserved and its cart cleared; coupons, gift cards, points, integrations and the order confirmation all wait for the capture.
- New: a Payment panel on the order page lists the order’s gateway transactions and, while a payment is authorised but not captured, offers Capture (charges the card, moves the order to Processing, sends the confirmation) and Void (releases the hold, cancels the order, returns the stock).
- New: the hourly payment check also follows authorised payments. A payment captured or approved in the gateway’s own dashboard completes the order; one declined, voided or expired there cancels it, e-mails the customer and returns the stock. Settings > General Settings > Order Automation gains “Keep checking authorised payments for (days)”.
- New: customers whose card was authorised or held for review receive an “Order Received” e-mail saying so; the “Order Confirmed” e-mail follows at capture.
- Changed: an order with an uncaptured authorisation cannot be moved to Processing or Completed by hand – capture or void it first. Cancelling such an order voids the authorisation.
0.2.44
- New: brand pages. Every choice of a Brand attribute now has its own page (/brands/brand-name/) with a logo, description, website link, page title and meta description, set in Attributes > (your Brand attribute) > Choices. A hidden choice takes its page offline.
- New: an all-brands page (/brands/) listing every brand that has products, with logos and product counts. Both pages are in the sitemap and the Appearance > Menus “TitanCart Pages” box.
- New: the brand name on product cards and the product page links to the brand’s page.
- New: Settings > SEO lets you choose the brand URL pattern.
- Removed: the unused legacy brand tables and the products’ brand_id column (never reachable from the admin; dropped only when empty).
0.2.43
- Fixed: a fresh install now creates the attribute choices table (tc_product_feature_variants), so attribute choices can be saved and product listings no longer log a database error on new stores.
0.2.42
- New: the search results page has the shop’s grid / list / compact view toggle. It follows the same Settings > Appearance view options as the shop and remembers the visitor’s choice.
- Fixed: the search box’s suggestions now follow the same product scope as the shop and the search results page, so a theme or extension that limits which products a store shows limits the suggestions too.
- Fixed: the product page’s grouped Attributes tab no longer overflows on narrow phones.
- Fixed: the shop script no longer errors on a page that draws its own toolbar.
0.2.41
- Changed: the product page’s Attributes tab has a lighter look. Each attribute is its name, a dotted line and its value, without the grey name box, row lines or hover highlight.
0.2.40
- New: attribute groups. Products > Attributes > Attribute Groups lets you create a group such as Specifications or Dimensions, and each attribute has a Group field. On the product page the Attributes tab lists ungrouped attributes first, then each group under its own heading; product comparison shows the same headings. A group can set the categories for all of its attributes and can show them all on the product page with one tick. Deleting a group keeps its attributes. Stores without groups look exactly as before.
0.2.39
- Changed: Products > Attributes. “List Display” is now a single “Show on product cards” switch. You choose which attributes appear on product cards; your theme decides how they look. Existing attributes keep what they showed before.
- Changed: the “Size Pills” display type is now called “Text labels” in Attributes and in Product Filters. Nothing changes on the storefront.
- Changed: Products > Product Filters only offers the display types that suit the attribute: Checkbox and Multiple checkbox attributes filter as checkboxes; other attributes as checkboxes or colour swatches; Text labels attributes can also filter as labels. A filter you already saved keeps its display type.
0.2.38
- New: product search also finds products by an attribute value typed on the product, such as a UPC or a Manufacturer Part #. Works in the storefront search and in Products in the admin. Text attributes match on any part of the value; Number attributes match the exact number.
- New: storefront checkbox filters with more than 10 values show the first 10 with a “Show all” link and a search box, so long lists stay short. Ticked values always stay visible.
0.2.37
- Fixed: Products > Categories now shows a category’s saved image when you reopen it. Before, the image box came back empty, and saving the category again removed the stored image. If you re-saved a category after giving it an image, set the image once more.
0.2.36
- New: Settings > General > Page Header. Choose the storefront page header style: Automatic (what your theme did before), Hero (a full-width banner with an image, on any theme) or Compact (a slim breadcrumb strip). Set a default banner image, a dark-mode image, height, focal point, overlay and title alignment.
- New: each storefront page (shop, product, cart, checkout, account, search, gift cards, order received) can use the default header, its own image and title, or no header at all.
- New: each top-level category can have its own banner image; subcategories inherit it.
- New: Thumbnails > “Convert new uploads to WebP” saves new JPEG and PNG uploads as WebP at your JPEG quality setting, dimensions unchanged.
- Fixed: the dark-mode banner image is now swapped in when the storefront is in dark mode; the stylesheet rule that did this was missing.
- Fixed: the page header on the cart and order-received pages now follows the same settings as every other page.
0.2.35
- Attributes: “Show in product comparison” now controls the compare table. Every attribute already in your store stays ticked by this update, so nothing disappears; untick an attribute to keep it out of the comparison.
- Product Filters: a filter whose attribute has been disabled no longer appears in the storefront sidebar.
- Product Filters: “Round To” now sets the step of the price slider and the min-max boxes, as its hint always said.
- Product Filters: Slider and Range are offered for the Price source only; Color swatches and Size pills for attribute sources only. A slider on an attribute drew a broken second price control.
- Attributes: “Show in storefront filters” is now “Available as a Product Filter” and links to Products > Product Filters, where the storefront filter is created. List Display offers Text chip, Color swatches and Hidden; “Number slider” and “Size pills” never changed a product card and are gone (existing attributes keep working).
- Attributes: the “All Groups” and “Group” dropdowns are removed; nothing could create a group.
- Fixed: a color value with no hex code now gets a distinct swatch on the product page instead of grey, and a variation with no image shows its initials and name in the image tile instead of the first two letters.
- Fixed: the unpaid-order cleanup task re-arms itself on stores that lost it, and deactivating the plugin now removes every scheduled task it created.
- Fixed: an expired admin session in a long-open Settings tab now says so instead of “Section not found”.
- Fixed: the cleanup note reads “1 hour”, not “1 hours”.
0.2.34
- Fixed: Check and Bank Transfer orders are now placed On Hold; previously they stayed Pending Payment and were cancelled automatically as unpaid after a day. Orders still waiting are moved to On Hold by this update, and any that were already cancelled are listed in System Logs.
- Fixed: Cash on Delivery, Check and Bank Transfer no longer send a separate On Hold status e-mail alongside the order confirmation.
- Settings: new Order Automation card controls the unpaid-order cleanup and payment reconciliation, including how long to wait before an unpaid order is cancelled. These settings were previously reachable only in the database.
- Fixed: with two payment methods on the same card gateway, checkout could show no card form and Stripe webhooks could be checked against the wrong signing secret. Checkout now lists only fully configured methods, and webhooks are verified against every active method’s secret.
- PayPal and Venmo: the “send shipping address” preference is honoured, and orders with nothing to ship no longer ask PayPal for a shipping address.
- Product Code replaces “SKU” on the customer invoice, the My Account order detail, the admin new-order e-mail and the low-stock notification template.
- Fixed: the product page price now includes the cost of the Options you choose, so the price shown matches the price charged.
- Fixed: a Select, Radio or Checkbox option can no longer be saved without a value; an option left empty no longer shows a bare label or stops the product from being added to the cart.
- Fixed: saving a product without its Product Code no longer replaces the code when Product Code auto-generation is on.
- Fixed: a variation group shown as a single product no longer disappears from the shop when one of its members is deleted or disabled.
- Fixed: activating the plugin from WP-CLI, a WordPress Playground blueprint or a host’s one-click installer now creates tables, defaults and scheduled tasks exactly as activating from the Plugins screen does.
- A payment gateway that cannot change an order’s status now writes a warning to System Logs.
- Subscriptions: a subscription that could not store a renewal token is flagged in the admin instead of failing silently at its first renewal.
- Demo stores: the demo import no longer copies a one-per-order quantity limit onto products.
- Developers: the product page’s variation-group selector, attribute indicators, Options and quantity blocks are shared template partials; new filter titancart_cart_add_refusal, new action titancart_demo_installed, new helper titancart_effective_shelf_price().
0.2.33
- Fixed: a card payment confirmed after the checkout tab had gone (3-D Secure, a dropped connection) left the order at Processing with stock untaken, the cart still full, gift cards unissued and the coupon unused. The Stripe webhook now completes the order itself, and an hourly reconciliation completes any order the gateway confirms as paid, even on a store with no webhook configured.
- …