New: rejection reasons. Merchants can define a list of preset reasons in
Settings, and rejecting a request now requires a reason — pick a preset
or type one on the spot. The reason is sent in the customer’s rejection
email, shown on the request in My Account and on the admin request panel,
and added to the linked order note. Works from both the request edit
screen and the quick actions on the WooCommerce order screen.
New: per-category withdrawal rules. Exclude specific product categories
from returns (the legal exceptions to the right of withdrawal — art. 16
of OUG 34/2014: personalised, sealed-then-unsealed, perishable goods,
etc.) or grant them a longer
window than the standard one (never shorter than 14 days). Ineligible
products are shown disabled with an explanation on the form, and the
rule is re-enforced server-side so it can’t be bypassed.
New: one active request per order. While a request is pending or being
processed, the customer can’t open a second one for the same order — they
see its status in My Account instead. Once it’s resolved they can submit
again: approved quantities are deducted (a line can’t be returned more
times than it was purchased), while a rejection frees the item up for
another attempt.
Change: the minimum configurable withdrawal period is now 14 days, the
statutory minimum under OUG 34/2014 — a longer window can still be set,
a shorter one can’t.
Change: the “Powered by Returino” credit in the confirmation email and on
the public form now links to returino.com (UTM-tagged), so store owners
can attribute the traffic. The email keeps its raster mark, which remains
the most reliable choice across email clients.
Fixed a legal-source error: the withdrawal exceptions (personalised,
sealed-then-unsealed, perishable goods, etc.) are defined in OUG 34/2014,
art. 16 — not OUG 18/2026, which only mandates the digital process
(button, form, durable-medium confirmation). Corrected throughout the
description and any user-facing text that misattributed them.
1.2.4
Admin menu icon is now the Returino mark instead of a generic dashicon.
1.2.3
Updated the plugin directory banner artwork. No code changes.
1.2.2
Updated the readme’s Description/Installation/FAQ to match the 1.2.0/
1.2.1 changes — Installation no longer tells you to create the return
page by hand (it’s created automatically), and there’s a new FAQ entry
on how to approve/reject a request.
Renamed the “Credit Returino” setting to “Logo Returino” with a clearer
description of what the checkbox does.
1.2.1
Replaced the classic editor’s native “Publish” box for return requests
with a dedicated “Stare cerere de retur” panel — no more “Publish”/
“Published” terminology that meant nothing here. Shows the current
status plainly and three one-click actions (Mark as processing /
Approve / Reject), applied instantly over AJAX. Approving or
rejecting still triggers the existing order note and customer email
automatically, same as before.
1.2.0
Admin return-request list reworked: real columns (Order, Client,
Status, Items, Confirmation email, Request date) instead of the
generic title/date WordPress gives a CPT by default. Removed the
“Add New” button (requests only ever come from the customer form),
the “Mine” view and the “All dates” dropdown (neither meaningful
here), and added a Status filter dropdown.
New request titles no longer include the customer’s name (now meta +
its own column only) — keeps it out of revisions and global admin
search. Existing request titles are left as they are.
A return-form page is now created automatically if one doesn’t
already exist (searches for a page already using the shortcode
first, so nothing is duplicated). Configurable from Returino →
Settings; shows a one-time notice pointing at the page so it can be
linked from the site’s navigation, as OUG 18/2026 requires the
process to be clearly visible, not just technically present.
Added optional (on by default) email notifications: to the store
admin on a new request, and to the customer when a request is
approved or rejected. These are in addition to the mandatory
durable-medium confirmation, which still cannot be disabled. Each
tracks its own sent/failed delivery status via wp_mail_failed, same
as the confirmation email.
1.1.2
Fixed a critical bug (WordPress core #24415): custom post statuses need
both show_in_admin_all_list and protected set to appear in the
admin list’s “All” view — only the first was set, so the list table’s
“All (N)” count and the actual rows shown disagreed, and return
requests could go unnoticed. Added protected => true (kept
public => false — requests are still never queryable from the
front end).
One-time migration moves any request still stuck on the native
“Published” status (residue from the bug fixed in 1.0.9) back to
Pending, and logs a note on its linked order. Runs on admin_init and
self-disables after running once; trashed requests are left untouched.
1.1.1
Fixed the order-lookup rate limiter to key off a validated IP address
instead of trusting REMOTE_ADDR blindly — sites behind a reverse
proxy/CDN (e.g. Cloudflare) could otherwise have every visitor share
one throttling bucket, turning the anti-enumeration protection into an
accidental site-wide lockout. Added a returino_rate_limit_ip filter
for sites that need to supply the real visitor IP (see FAQ). A
successful lookup now also clears that visitor’s failed-attempt count.
Renamed the wp_ajax_oug18_* AJAX action/nonce names to
wp_ajax_returino_* (code only, no stored data affected — the
oug18* post meta keys are unchanged).
1.1.0
Renamed the plugin to “Returino – Formular de retur for WooCommerce”
(previously “Returino for WooCommerce”) for better discoverability
when searching in wp-admin.
The “Powered by Returino” credit on the public form is now opt-in and
disabled by default (Returino → Settings) — previously it showed
automatically. Existing installs will stop showing it until enabled.
Added per-IP throttling on order lookup (max 10 failed attempts / 15
minutes) against order-number enumeration.
Unified the order-lookup error message so it no longer reveals whether
the order number or the email was the wrong part.
Renamed the internal “oug18-” prefix (markup/CSS/JS) to “returino-“.
1.0.10
Added a server-side guard (wp_insert_post_data) so a return request can
never be saved with a status other than our own four, regardless of
which admin UI path is used (Quick Edit, bulk edit, REST API, etc.) —
the previous fix only covered the classic per-post editor.
1.0.9
Fixed a bug where opening/saving a return request in wp-admin silently
reset its status to “Published” (the classic edit screen didn’t
recognize our custom statuses), making it disappear from the order
screen and the customer’s My Account tab. The custom statuses are now
registered in that screen’s status dropdown.
1.0.8
Small performance improvements.
Added subtle Returino branding to the email footer and the form.
1.0.7
IBAN is now only required for payment methods that can’t be refunded
automatically (cash on delivery, bank transfer). Card/wallet payments
skip the IBAN field entirely, both in the form and in validation.
1.0.5
Track each confirmation email’s delivery status (sent/failed), captured
via wp_mail_failed, and show it on every return request in admin.
“Resend confirmation” button — resends the exact original content, not
a rebuilt one.
“Send test email” tool on the settings screen.
Confirmation content is now saved in the database independent of email
delivery, and shown to the logged-in customer under My Account →
“Cererile mele de retur” — a durable-medium safety net that doesn’t
depend on the email actually arriving.
Dashboard/list notice and an admin-menu count bubble for failed
confirmation emails, so failures surface without relying on email.
1.0.4
Renamed to Returino for WooCommerce to avoid confusion with an
unrelated, unaffiliated existing company of the previous name.
Replaced generic “woo”/”wc” prefixes (namespace, constants, CPT slug,
statuses, shortcode tag) with a distinct “returino” prefix.
1.0.2
Removed the GitHub-based update checker in favor of native
wordpress.org updates.
Text domain aligned with the plugin slug.
1.0.1
Meta box on the WooCommerce order screen showing linked return requests.
Automatic order note whenever a request’s status changes.
Explicit HPOS compatibility declaration.
1.0.0
Initial release: custom post type + statuses, 2-step front-end form,
AJAX validation, confirmation email, admin meta box, Returino menu.