Porto fix

Porto WooCommerce Problems: Product Layouts, Cart and Checkout

Porto does more than style WooCommerce. It replaces a good share of the shop's templates and lays its own product layouts, mini-cart, quick view and catalog mode over the top. When a Porto store misbehaves, the first question is whether WooCommerce is at fault or one of the features Porto added to it.

woocommerce · porto shop · last 30 days
Product click to paid order
The click that never reaches the cart
Cart leak
Opened a product page4,120
Clicked Add to Cart688(17%)
Cart updated241(35%)
Opened checkout203(84%)
Order placed148(73%)

447 clicks never became a cart. The mini-cart script was merged into a cached file and stopped answering.

Illustrative — an AJAX cart sitting behind a page cacheone setting

What you are seeing

  • Product pages switched layout, or a few differ from the rest
  • The Add to Cart button, and sometimes the price, is gone
  • The header cart reads zero until the page is refreshed
  • Quick view or the product gallery opens empty
  • Checkout takes orders but looks unstyled or oddly arranged

Why it happens on Porto

Most common first.

  1. 1

    Product layout set in three places at once

    Porto takes a single product's layout from a global choice in Theme Options, from an option on the individual product and from any product template made in the Templates Builder with a display condition. The most specific one wins. A layout that changed by itself was usually changed in a place nobody thought to look.

  2. 2

    Catalog mode switched on

    Porto's catalog mode hides the Add to Cart button, and optionally the price, to turn a store into a brochure. It gets enabled during setup, for a wholesale experiment or by importing a demo's theme options, then forgotten. It is the rare shop outage that comes with its own checkbox.

  3. 3

    Porto's shop templates behind the installed WooCommerce

    The theme carries its own copies of WooCommerce template files, and porto-child may carry older copies still. When WooCommerce updates and Porto does not, those files describe a cart or checkout that has since changed, and a field or button goes missing without any error.

  4. 4

    Shop features that live in Porto Functionality

    Product templates from the builder, quick view and several product widgets are delivered by the companion plugin. If it is inactive or a release behind the theme, those pieces open empty or fall back to a bare default while the rest of the page looks normal.

  5. 5

    A page cache or merged script in front of the AJAX cart

    Porto adds to the cart and refreshes the header mini-cart with background requests. Cache the page too aggressively, or merge Porto's scripts in a speed setting, and the request fails or returns an old answer. The product is in the cart and the header still shows the old count.

How to fix it, in order

Least invasive first. Stop at the step that fixes it.

  1. 1

    Reproduce it as a shopper, with the console open

    Use a private window, logged out, on a staging copy if one exists. Note the page type and the exact product. Open the browser's developer console and repeat the action. A red error naming a Porto or WooCommerce script narrows the search before you change a single setting.

  2. 2

    Rule out catalog mode

    Go to Porto, Theme Options, WooCommerce and find the Catalog Mode settings. If it is enabled, that is why the button or price is missing. Switch it off, save and reload a product page in the private window.

  3. 3

    Trace the layout from the product outward

    Edit the affected product and look at Porto's own options box for a layout override. Next open Porto, Templates Builder and check for a product template whose display condition covers this product. Last, read the single product layout chosen in Theme Options. Set it in one place and clear the other two.

  4. 4

    Bring the templates current

    Open WooCommerce, Status and read the template overrides. Files flagged under the porto folder are fixed by updating the theme and then Porto Functionality. Files flagged under porto-child are copies someone made. Refresh them from the parent or remove them.

  5. 5

    Take the cart out of the speed settings

    Confirm the cart, checkout and account pages are excluded from page caching. Then switch off JavaScript merging in both Porto's speed settings and your caching plugin as a test. If the mini-cart recovers, turn features back on one at a time until you find the one that breaks it.

  6. 6

    Place a real order on each product type

    Buy a simple product and a variable one on a phone, from the mini-cart through to the confirmation page. Check whether your Checkout page uses the classic shortcode or the checkout block. Porto's checkout styling may apply to one and not the other, so choose deliberately and test the one you keep.

Keep it from coming back

  • Change product layout in one place and record which place that is
  • After each WooCommerce update, read Status for outdated Porto templates
  • Let no speed setting near the cart until a test order has passed
  • Place a test order after any change to Porto's shop options

The permanent fix

A faster Next.js build, with a CMS made for your business

A store that needs a layout investigation after every update is telling you its logic is spread across a theme, a companion plugin, a child theme and WooCommerce itself. When that keeps costing orders, a Next.js storefront with a custom CMS puts product pages in one codebase, serves them as static files and gives you an editor shaped around your catalog. It is a larger step than a repair, and worth pricing once the repairs start repeating.

On Porto todayOn Next.js with a custom CMS
What you keep updatedWordPress, the theme, its builder and every bundled plugin, all in stepNothing on a schedule. There is no theme or plugin stack to fall out of step
How a page is servedBuilt from the database on each visit, through the theme and its builderBuilt ahead of time and served as finished files from servers near the visitor
How you edit itA general-purpose builder with every option the theme shipsA CMS built around what your business actually changes: services, prices, photos, posts
What can break itAn update to any one of those parts, or a license that lapsesA change someone makes on purpose, tested before it goes live

Your content, your addresses and your rankings come with you: every page is moved, every old address is redirected, and you get a login to an editor that only shows what you need. A repair is still the right call for many sites, and we will say so when it is.

Free · No obligation

Want this fixed on your Porto site?

Tell us what you are seeing. We look at the site, tell you plainly what is wrong and what it takes, and quote a fixed price before any work starts.

Which of these sounds like you? (pick any)

Frequently asked

Check catalog mode in Porto's Theme Options first, since hiding that button is its purpose. If it is off, look at the product itself: no price or no stock removes the button on any theme. After that, suspect an outdated template override or Porto Functionality being behind the theme.

For every product, choose the single product layout in Porto's Theme Options under WooCommerce. For one product, use the layout option on that product's edit screen. For a custom design, build a product template in the Templates Builder and give it a display condition. Use one method per store where you can.

The count is filled in by a background request after the page loads. If a page cache serves an old copy of that answer, or the script that asks for it fails, the header keeps showing the previous number. The cart page itself is normally correct, which is how you can tell the fault is in the display.

It will run, because the block belongs to WooCommerce and not to the theme. The catch is appearance and options: Porto's checkout styling and any checkout settings in its Theme Options may have been written around the classic shortcode checkout. Try the block on a staging copy and complete a purchase before switching the live store.

Keep reading

CallGet a quote