BKM EU Withdrawal Button – Right of Withdrawal Form
Changelog
1.1.0
Full compliance overhaul for EU Directive 2011/83/EU and the new online withdrawal-function rules of Directive (EU) 2023/2673 (Article 11a), applicable from 19 June 2026.
Added an optional floating withdrawal button (Article 11a) that can be displayed on every page and linked to your withdrawal page, configurable under Plugin Settings.
Restored and expanded admin control over form fields: each field can now be shown or hidden, and set required or optional, from Plugin Settings. Full Name, Order Number and Email remain always shown and required, as mandated by Article 11a for the withdrawal function.
Added Contract Type field (Purchase of Goods / Provision of Services / Digital Content) and a dynamic Date field whose label adapts to the selected contract type.
Added Withdrawal Scope field (Full Order / Specific Items) to support partial withdrawal as recognised by EU law.
Renamed Product Details to Description of Goods/Service; it becomes required automatically when “Specific Items” is selected.
Replaced the Withdrawal Reason field with an optional Additional Comments field — consumers may withdraw without giving any reason (Article 9).
Two-step submission with a durable-medium acknowledgement email that records the content and the date and time of the withdrawal declaration.
Confirmation and admin notification emails now include the contract type, withdrawal scope, relevant date, description and any additional comments.
Admin request detail view now displays the contract type, withdrawal scope and the relevant order/contract date.
CSV and Excel exports now include the new contract type, withdrawal scope and date columns, with human-readable labels.
Added an “EU Law Info” admin page summarising the Directive, the 31 covered countries, common Article 16 exceptions and penalties, with a link to the official text on EUR-Lex.
Database schema updated with new columns (contract_type, withdrawal_scope, contract_date, date_received) and relaxed nullability so optional or hidden fields can be stored empty; withdrawal_reason renamed to additional_comments. Includes an automatic, data-preserving migration for existing installations.
1.0.2
Validated the Form Width design setting against a strict allow-list of CSS dimension values to prevent CSS injection.
Moved remaining admin-area inline style and script blocks into properly enqueued CSS/JS files.
Rewrote the listing and export database queries to use fully literal, fixed-placeholder $wpdb->prepare() calls (including a fixed 50-slot IN() list for bulk export), so every query is statically verifiable by Plugin Check.
Shortened the readme short description to meet the 150-character limit.
1.0.1
Fixed WordPress.org review issues: removed arbitrary CSS insertion, implemented wp_enqueue for assets, updated naming prefixes, removed direct core file includes.
Rebranded plugin to better reflect EU Directive compliance.