The problem
UpGreens is a shop in Naples that sells electric bikes, fat bikes and accessories through WooCommerce. The shop was live with real orders, so nothing could break. But it had real problems: product pages showed prices with VAT and the cart showed them without, so the same product showed two different prices. The cart was half in English, a PHP warning fired on every page load, and the home page looked dated.
What I built
I fixed the shop and rebuilt its front end, with only one small guarded fix inside the theme.
- Consistent prices — shop, cart and checkout now all show prices including VAT, so the customer sees one price from product page to payment.
- Cart and checkout in Italian — a small must-use plugin translates the remaining English strings through WordPress filters, so it survives theme updates.
- Home page from live data — hero, categories, product showcase, benefits, news and community band are generated from the catalogue. The “up to X% off” badge is calculated from real discounts, and the free-shipping threshold (€150) is read from the shop settings.
- New header and footer — a single white bar with logo, menu, search, account and cart counter, and a footer that lists only the payment methods actually available at checkout.
- Instalment payments — Klarna and HeyLight, which lets customers split the amount into up to 12 interest-free instalments.
- Italian invoicing — VAT number and tax code fields at checkout, and PDF invoices.
- Tested layouts — the product grid shows 4 per row on desktop, 2 on tablet and 1 on phone.
Built with
WordPress and WooCommerce with the Bikeway theme and WPBakery, Klarna and HeyLight gateways, table-rate and cart-based shipping, PDF invoices and Wordfence. The new parts are custom must-use plugins in PHP for the home page, header, footer, product grid and cart translation. The catalogue has 28 published products.
Why it was done this way
The theme has no child theme, so any edit to its files would be lost at the next update. I put every change in separate must-use plugins instead. Each one can be switched off by deleting a single file, and I took a database backup before every change on the live shop.


