← Back to solutions
PluginPHPPaid

WP Product Manager

WordPress plugin that prices a WooCommerce catalogue against an upstream store. Multi-currency retrieval, a pluggable strategy that picks the price to charge, a transient cache so product pages never wait on an external call, and custom fields carried from product form to finished order.

WP Product Manager

Stack

PHPWordPressWooCommerceMySQLREST API

The problem

A store reselling console games priced tens of thousands of items against an upstream store that changes its own prices constantly: sales start and end without warning, and the same title costs a different amount in every regional storefront. Prices in the shop were therefore either stale or wrong: a manual pass over the catalogue took days and was obsolete before it finished.

The naive fix (asking the upstream store for a price whenever a product page loads) is worse. A catalogue page showing thirty products becomes thirty outbound calls, page load collapses, and one slow upstream response takes the shop down with it.

Before → After

BeforeAfter
Prices updated by hand, days behind the sourcePrices pulled from the upstream store and refreshed automatically
One region's price applied to everythingEvery available regional price fetched and compared
Which price to charge was a per-product decision made by a personA pricing strategy, chosen once and applied to the whole catalogue
Live lookups on page load: slow pages, upstream outages visible to buyersCached prices with a short lifetime: a product page never waits on an external call
Order data missing the fields fulfilment actually neededCustom fields carried through product form, cart, checkout and order
Changing the pricing rule meant editing codeStrategies are swappable behind one interface

How it works

  1. Prices are collected per region. For a given product the plugin asks the upstream store for its price in each configured currency, rather than trusting a single storefront.
  2. A strategy picks one. The choice is a pluggable component behind a single interface; the shipped implementation takes the lowest legitimate regional price. Swapping in a different rule: a fixed region, a margin over the median: does not touch the rest of the plugin.
  3. The result is cached. The selected price is written to a short-lived transient. Catalogue and product pages read the cache, so rendering a page never blocks on an upstream call and an upstream outage does not become a shop outage.
  4. Custom fields follow the order. The extra fields the fulfilment flow depends on are injected into the product edit form, the cart, the checkout and the finished order, so the data an operator needs is attached to the order rather than reconstructed later.
  5. The catalogue stays current. Refreshes run on a schedule against the whole catalogue, which is what keeps a shop of this size in step with a source that changes daily.

Key features

  • Multi-currency price retrieval from the upstream store
  • Pluggable pricing strategy: lowest regional price shipped as the default
  • Transient-backed price cache with a configurable lifetime
  • Custom fields on product form, cart, checkout and order
  • Scheduled catalogue-wide refresh
  • Typed DTOs for every upstream response, so a shape change fails loudly

Installation

  1. Upload the plugin folder to /wp-content/plugins/ and activate it
  2. Configure the upstream API credentials and the currencies to query
  3. Select the pricing strategy and set the cache lifetime
  4. Run the first catalogue refresh manually to populate the cache
  5. Schedule the recurring refresh at whatever interval the source justifies

Open for contract collaboration

I am available for contract-based collaboration. If you have an interesting project idea, schedule a call via Calendly.

Schedule a 30-min call