| 开发者 | beziworld |
|---|---|
| 更新时间 | 2026年6月2日 04:53 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
wp bzww list, wp bzww refund, wp bzww cancel, wp bzww received, wp bzww stats/wp-json/bzww/v1/ for headless and mobile clients[bzww_withdrawal_policy] and [bzww_model_form] shortcodestemplates/ into your-theme/beziworld-withdrawal-for-woocommerce/<same-path>.php and the plugin will use your version.
External services
This plugin performs no analytics, telemetry or remote downloads, and phones nothing home. Everything runs inside your WordPress installation.
The single exception is entirely optional and off by default: if you enter a notification Webhook URL in the settings (for Slack, Discord or your own endpoint), the plugin sends a small JSON payload to that URL when a withdrawal is submitted. The payload contains the event name and the withdrawal and order identifiers (and the order number). No webhook is configured by default and nothing is sent unless you set a URL; the destination is the address you choose.
/wp-content/plugins/.[bzww_withdrawal_form] shortcode.The plugin covers the technical requirements: a dedicated withdrawal function, a clearly labelled button, immediate confirmation on a durable medium, item-level selection, and a refund mechanism within 14 days. You still need to update your terms of sale, your privacy policy and the order summary copy. The plugin does not provide legal advice. Consult a lawyer for the specifics of your jurisdiction.
The plugin auto-creates a public page on activation with the [bzww_withdrawal_form] shortcode. Guests visit that page, enter their order number and the email used at checkout. After verification, the plugin issues a single-use token and shows the same withdrawal form a logged-in customer would see. The link is also embedded in the order confirmation email for one-click access.
Yes. The 14-day clock starts after the last parcel is delivered. Because WooCommerce core does not track shipment-level delivery, the plugin uses the order completion timestamp by default and exposes a bzww/order/delivered_at filter so a shipping/tracking plugin can override it.
Per Article 16(m) CRD, sealed digital products and downloadable software are excluded by default. Products flagged as Virtual + Downloadable in WooCommerce are skipped automatically.
Yes. While a statement is in the pending state the customer sees a "Cancel this withdrawal" button on the success page in My Account.
Yes. The plugin declares full HPOS compatibility on activation.
In a private custom post type, bzww_withdrawal. Each statement is one post with meta fields holding order id, items, amount, IP and user-agent.
Use the bzww/eligibility/holidays filter to return an array of Y-m-d strings. The plugin will roll the 14-day deadline forward when it lands on one of those dates.
Yes. WooCommerce → Withdrawal Settings → Withdrawal period (days) — set anywhere between 14 and 60 days. The default is the 14 days mandated by EU law; the minimum cannot go below the statutory 14.
Yes. Each withdrawal detail page has an editable Refund amount input pre-filled with the calculated value. Override it to deduct a restocking fee or to account for the condition of returned goods.
The plugin is built to be extended. The main filters and actions are listed below; all pass the relevant order or withdrawal so you can tailor behaviour without touching plugin files. Eligibility & deadlines (filters)
bzww/eligibility/excluded_statuses — order statuses excluded from withdrawal.bzww/eligibility/deadline — the computed withdrawal deadline (DateTime).bzww/eligibility/holidays — extra non-working days for weekend/holiday roll-over.bzww/order/delivered_at — override the delivery date the deadline is based on.bzww/rules/order, bzww/rules/item — allow or deny a specific order or line item.bzww/withdrawal/deny_duplicate — whether to block a second statement for the same order.bzww/refund/deadline_days — statutory reimbursement deadline in days (default 14).bzww/refund/args — arguments passed to the WooCommerce refund.bzww/refund/cheapest_shipping — override the cheapest-delivery amount (Art. 13(2)).bzww/withdrawal/submitted ( $withdrawal_id, $request, $order )bzww/withdrawal/cancelled ( $withdrawal_id )bzww/withdrawal/status_changed ( $withdrawal_id, $previous, $current )bzww/withdrawal/transition_to_{status} ( $withdrawal_id, $previous )bzww/refund/before, bzww/refund/after, bzww/refund/failedbzww/plugin/booted ( $plugin )bzww/submit/rate_limit, bzww/submit/rate_window, bzww/lookup/rate_limit, bzww/lookup/rate_window — throttling.bzww/request/client_ip — resolved client IP behind proxies.bzww/lookup/resolve_order — custom guest order lookup.bzww/csv/columns, bzww/csv/row — admin CSV export shape.bzww/webhook/payload — outbound webhook body.bzww/templates/theme_directory, bzww/templates/located — template overrides.bzww/placement/html, bzww/placement/tokens, bzww/access/label, bzww/access/url — front-end placement.bzww/checkout/digital_consent_text, bzww/assets/should_enqueue, bzww/model_form/policy_html, bzww/model_form/model_form_html.GET /wp-json/bzww/v1/stats (capability manage_woocommerce) and the wp bzww CLI commands are also available for monitoring and automation.
wp bzww stats command and the /wp-json/bzww/v1/stats REST endpoint now report the number of open statements past the reimbursement deadline (overdue_refunds), so external monitoring and alerting can track compliance risk.bzww/refund/deadline_days.GET /wp-json/bzww/v1/stats (requires the manage_woocommerce capability) returning withdrawal counts by status, the total, the refunded amount and the shop currency — for headless dashboards and monitoring.wp bzww stats — prints withdrawal counts by status and the total refunded, for scripting and monitoring.wp_dropdown_pages() on the settings page so the PHPCS escape-output rule no longer flags the call.assets/js/admin-list.js).the_title filter and the WooCommerce endpoint-title filter.