Purchase Contract Withdrawal Button for WooCommerce

Changelog

1.3.3

  • Fixed: the All / Pending / Resolved filter on the Withdrawals admin screen always showed every request regardless of the selected tab. State filtering is now applied reliably and works across both the legacy and HPOS order stores.
  • New: withdrawal records can now be deleted from the admin list (row action and bulk action). This removes the withdrawal data from the order; the order itself is not deleted and its status is left unchanged.

1.3.2

  • Fixed: changing an order’s status (or otherwise saving an order from the edit screen) could trigger an HTTP 500 / fatal error. The cooling-off meta box saved the order inside the woocommerce_update_order hook, which re-entered the same save handler and caused infinite recursion. Added a re-entry guard.

1.3.1

  • Lightweight build — the deployed package now ships only compiled .mo translation files. The matching .po source files remain in the GitHub repository for translators.

1.3.0

  • New: bundled translations for all 24 official EU languages — Bulgarian, Croatian, Danish, Dutch, Estonian, Finnish, French, German, Greek, Hungarian, Irish, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Slovenian, Spanish, Swedish (in addition to existing Czech and Slovak). Native-quality review via translate.wordpress.org is welcome and will override the bundled files automatically.

1.2.3

  • Removed: “Custom button CSS” textarea setting and the pcwb_custom_css option. WordPress.org guidelines do not allow plugins to accept arbitrary CSS input; the bundled stylesheet remains, and themes can override styles in their own files.
  • Replaced inline arrow-function sanitize_callback for pcwb_guest_enabled with a named class method.

1.2.2

  • Code quality: addressed Plugin Check warnings — annotated CSV-streaming filesystem calls, admin list-table filter parameters, and intentional WooCommerce email hooks with explanatory phpcs:ignore comments.
  • Internal: renamed template-scoped $completed variable to $pcwb_completed in admin email templates.

1.2.1

  • Added Requires Plugins: woocommerce header to declare WooCommerce as a required dependency (WP 6.5+).

1.2.0

  • New: optional [pcwb_withdrawal_form] shortcode for non-logged-in customers (order number + email lookup with rate limiting, short-lived submission token).
  • New: dedicated “Withdrawals” admin screen under WooCommerce — list, filter (pending/resolved/all), date range, search, bulk “Mark as resolved”, and CSV export.
  • New: “Withdrawal cooling-off” order meta box — enter the date the goods were delivered to make the cooling-off period start from the legally correct moment.
  • New: order actions — “Submit withdrawal on behalf of customer” and “Mark withdrawal as resolved”.
  • New filter: pcwb_period_reference_date to override the reference date programmatically.
  • New action: pcwb_after_resolve ($order, $resolved_by) fires when a withdrawal is marked resolved.
  • Internal: PCWB_Frontend::do_submit() and ::resolve() are now reusable across customer, guest and admin flows.

1.1.0

  • New: configurable button position (after order table, before order table, top of view-order page, or orders list row action).
  • New: Custom CSS field in settings — inject styles for the withdrawal button and form without touching theme files.
  • New filter: pcwb_button_positions to register additional hooks.

1.0.1

  • Renamed plugin and slug to comply with WP.org plugin naming guidelines.
  • Fixed: replaced esc_url_raw with esc_url for displayed URL in plain text admin notification.
  • Updated function/class prefix to pcwb_ / PCWB_ for collision safety.

1.0.0

  • Initial release.

Plugin Website
Visit website

Version:
1.3.3
Last Updated
June 19, 2026
Requires
WordPress 6.0
Tested Up To
WordPress 7.0
Requires PHP
7.4

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.