| 开发者 | riinagency |
|---|---|
| 更新时间 | 2026年4月24日 15:00 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 6.9 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
eu-withdrawal-button-for-woocommerce folder to /wp-content/plugins/It adds a visible withdrawal button to your store, along with a form where customers can submit withdrawal requests. The plugin validates the order, notifies both parties via email, and tracks the request.
The customer receives a confirmation email, the merchant receives a notification, an order note is added, and the order status changes to "Withdrawal Requested" (configurable).
Product category exclusions and per-product exceptions are available in the paid version.
Yes, the plugin searches by WooCommerce order ID, custom order number meta fields, and order number output — compatible with Sequential Order Numbers and similar plugins.
The plugin stores withdrawal data in your own WordPress database. The Freemius SDK is used for license management and asks for your opt-in consent on activation.
ra_euwb_ / RA_EUWB_ / ra-euwb- across options, hooks, CSS classes, JS globals, nonces and admin menu slugs, to comply with the WordPress.org guidelines on unique prefixes. Existing WC order status slugs (wc-ewb-withdrawn, wc-ewb-completed), the database table ({prefix}ewb_withdrawals) and the _ra_euwb_deactivated_withdrawal order meta key are preserved so existing installations continue to work without data migration.<style> and <script> output. Admin order-status colours and the frontend ra-euwb-hidden utility class are now part of the enqueued stylesheets. Frontend button colours are static (overridable via theme CSS) instead of dynamic option-backed inline styles.eu-withdrawal-button to eu-withdrawal-button-for-woocommerce to match the WordPress.org plugin slug.class-ewb-i18n.php helper (text domain is loaded directly via load_plugin_textdomain() on init).localStorage. My Account pages ignore the dismissal and always show the bar (EU compliance — customer must be able to request a withdrawal there).withdrawn_items (JSON) and iban columns on {prefix}ewb_withdrawals. The upgrade runs automatically on plugin load via dbDelta() — no manual action required.=, +, -, @, tab, CR) and includes the Withdrawn Items + IBAN columns that were previously silently misaligned. (b) Client IP detection no longer trusts HTTP_X_FORWARDED_FOR / HTTP_CLIENT_IP by default — sites behind a trusted reverse proxy (e.g. Cloudflare) can opt in via the ewb_trust_forwarded_ip filter. (c) Submission now holds a MySQL advisory lock per order around the duplicate check + insert, closing the race window that allowed two simultaneous clicks to create duplicate withdrawal rows. (d) The public ewb_validate_order and ewb_lookup_by_key endpoints are now rate-limited (30 requests per 5 minutes per IP). (e) "Order not found" and "email does not match the order" are collapsed into a single generic verification error to prevent order enumeration. (f) Support form Reply-To header explicitly strips CR/LF defending against header injection.wc_create_refund() integration is planned for a future Pro release. Internal status slug (wc-ewb-completed) is unchanged so existing orders continue to work.ewb_withdrawal_days value. All texts now reflect the configured value dynamically with proper single/plural handling. Merchants can also use the {days} placeholder in the custom Bar text field.ewb_order_lookup_cutoff_date and ewb_order_lookup_max_scan filters. A warning is logged if the fallback triggers — this helps merchants spot custom order number plugins that don't use the standard _order_number meta key.wp_add_inline_style() attached to the main ewb-frontend stylesheet handle instead of printing a raw <style> tag on wp_head. This integrates with minify/cache plugins and follows WordPress standards.parent => woocommerce menu setting so the Freemius SDK can properly register its own admin pages (connect/opt-in, account, pricing). Previously the activation flow tried to redirect users to admin.php?page=ewb-withdrawal which WordPress rejected with "Sorry, you are not allowed to access this page." because the submenu was never registered. Plugin Settings link still opens WooCommerce → Settings → Withdrawal Button via first-path.ewb-withdrawal plugin page for Freemius SDK, with first-path redirecting Settings link to the WooCommerce → Settings → Withdrawal Button tab (existing UX preserved)ewb-account)ewb-pricing) for in-admin checkout flowis__premium_only() gates so Freemius can auto-generate a clean free build without premium featuresclass-ewb-rest-api.php to class-ewb-rest-api__premium_only.php so Freemius excludes it from the free buildRequires Plugins: woocommerce header (WordPress 6.5+ plugin dependencies)nalut to contributors