Skip to content

How a reorder works

This walkthrough follows a customer from their order history to a refilled cart, and explains what Reorder does at each step.

A logged-in customer opens My Account → Orders. Next to each past order whose status you have enabled (Completed by default) sits the reorder button with your chosen label, for example Order again. It lives in the normal WooCommerce order-actions area, so it does not shift the layout or add a separate widget. If you enabled the single-order view, the same button also appears on each order’s detail page.

When the customer clicks it, Reorder reads that order’s line items and adds every still-purchasable one back into the cart in a single action — quantities and all. There is no clicking through individual product pages.

3. Unavailable items are handled gracefully

Section titled “3. Unavailable items are handled gracefully”

Some products from an old order may no longer be buyable — deleted, hidden, or out of stock. Reorder skips those and adds everything else. The customer then sees a clear notice naming exactly which products could not be re-added, so nothing fails silently and the cart never breaks. They can decide whether to proceed with what was added or find an alternative.

If the original order contained a specific variation — a medium black hoodie, say — Reorder re-adds that exact variation, not just the parent product. The customer does not have to re-pick size and colour.

After the items are added, the customer is redirected per your redirect target setting — to the cart to review and adjust, or straight to checkout for the fastest repeat purchase.

Reorder is built so a customer can only ever reorder their own orders:

  • Nonce-protected. Every reorder link carries a nonce, so it cannot be forged or replayed from elsewhere.
  • Ownership-checked. Before adding anything, the handler verifies that the current logged-in user actually owns the order. There is no IDOR — changing an order ID in the URL does not let anyone reorder someone else’s order.
  • Owner-only button. The button is only ever rendered for the customer who owns the order.

These checks are always on and have no setting to disable them.

The button is server-rendered into the standard order actions, so there is no jQuery dependency and no layout shift. The control is keyboard friendly with focus-visible styles, motion-safe, and the admin settings screen is dark-mode aware with inline help on every option.

  1. A repeat customer opens their order history.
  2. They click Order again on last month’s order.
  3. The still-available items refill the cart; a notice flags the one product that has since sold out.
  4. They land on checkout and pay — a repeat purchase in a couple of taps.