Widerrufsbutton
-
Werdet Ihr einen Widerrufsbutton in euer Plugin einfügen,
wie es ab dem 19. Juni 2026 Pflicht in der EU wird?
Danke und Grüße
Tobias
-
Hi Tobias,
ja, klar, da wird es rechtzeitig eine Lösung geben 🙂
Grüße
Perfekt wäre es, wenn es einen „intelligenten Widerruf“ statt einem globalen Widerrufsbutton geben würde. Also so, dass der Button:
- ein Teilwiderruf möglich ist und
- nur für widerrufsfähige Artikel gilt/sichtbar ist bzw nur erscheint wenn nötig
Vielen lieben Dank schon mal im Voraus für eure Unterstützung 🙂
Danke für den Widerrufsbutton. Finde ihn richtig super.
Ich habe allerdings noch ein paar Änderungen, die für mich besser sind, in einer Child Datei eingefügt.
Dabei ist mir aufgefallen, dass die Verlinkung auf den Child Ordner in den Dateien bei mir nicht stimmte.
Dort steht:
This template can be overridden by copying it to yourtheme/woocommerce/forms/order-withdrawal-request-item-select.php.
Müsste es nicht folgend sein:
yourtheme/woocommerce-germanized/forms/order-withdrawal-request-item-select.php.
sein?
Die Änderungen sind:- Produktbilder in der Artikelauswahl: kleine Vorschaubilder der Produkte. Gerade bei Bestellungen mit vielen ähnlichen Artikeln (z. B. Varianten) hilft das Bild dem Kunden enorm, den richtigen Artikel für den Widerruf zu identifizieren.
- Permanente Artikelliste (auch bei Einzelbestellungen): Standardmäßig wird die Artikelauswahl ausgeblendet, wenn nur ein Produkt in der Bestellung ist. Ich habe dies so angepasst, dass die Liste immer erscheint. Natürlich mit Bild.
Wenn ein Kunde viel Bestellt, kann er so durch die Bestellungen klicken und sieht was er bestellt hat. - Wegfall der optionalen Checkbox „Manuell wählen“: Um den Prozess zu verkürzen, habe ich die Checkbox
manually_select_itemsentfernt und die Artikelliste stattdessen permanent eingeblendet. Der Kunde muss so nicht erst einen zusätzlichen Klick tätigen, um seine Produkte zu sehen.
Durch einen klaren Hinweistext („Bitte Artikel wählen“) direkt über der bebilderten Liste ist der Prozess nun wesentlich intuitiver als die Standard-Checkbox-Logik.
Vielleicht ist das ja eine interessante Anregung für eure Roadmap!
-
This reply was modified 2 weeks, 4 days ago by
Tobias.
Wer meine aktualisierten Dateien testen möchte kann dies gerne tun.
Einfach den kompletten Inhalt folgender Datei ersetzen:
order-withdrawal-request-item-select.php<?php
/**
* Cancel order request item select form.
*
* This template can be overridden by copying it to yourtheme/woocommerce/forms/order-withdrawal-request-item-select.php.
*
* HOWEVER, on occasion EU OWB will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @package Vendidero/OrderWithdrawalButton/Templates
* @version 1.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
$cancelable_items = eu_owb_get_withdrawable_order_items( $order );
$manually_select_items = apply_filters( 'eu_owb_woocommerce_manually_select_items_default', $manually_select_items );
?>
<p class="eu-owb-woocommerce-withdrawal-order-details">
<?php
echo wp_kses_post(
apply_filters(
'eu_owb_woocommerce_order_details_status',
sprintf(
/* translators: 1: order number 2: order date */
esc_html_x( 'Order #%1$s was placed on %2$s.', 'owb', 'woocommerce-germanized' ),
'<mark class="order-number">' . $order->get_order_number() . '</mark>', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'<mark class="order-date">' . wc_format_datetime( $order->get_date_created() ) . '</mark>' // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
),
$order
)
);
?>
</p>
<div class="form-row form-row-full">
<input type="hidden" name="manually_select_items" value="1" />
<label class="woocommerce-form__label checkbox">
<strong><?php echo esc_html__( 'Bitte die gewünschten Artikel für den Widerruf markieren:', 'woocommerce-germanized' ); ?></strong>
</label>
</div>
<table class="woocommerce-table woocommerce-table--order-withdrawal-request-items shop_table order-withdrawal-request-items-table">
<thead>
<tr>
<th class="woocommerce-table__product-select product-select">
<input class="woocommerce-form__input woocommerce-form__input-checkbox order-withdrawal-request-item-checkbox-select-all" id="select-all-items" type="checkbox" />
<label for="select-all-items">
<span class="screen-reader-text"><?php echo esc_html_x( 'Select all', 'owb', 'woocommerce-germanized' ); ?></span>
</label>
</th>
<th class="woocommerce-table__product-name product-name"><?php echo esc_html_x( 'Product', 'owb', 'woocommerce-germanized' ); ?></th>
<th class="woocommerce-table__product-table product-quantity"><?php echo esc_html_x( 'Quantity', 'owb', 'woocommerce-germanized' ); ?></th>
</tr>
</thead>
<tbody>
<?php
foreach ( $cancelable_items as $order_item_id => $item_data ) {
wc_get_template(
'forms/order-withdrawal-request-item.php',
array(
'item' => $item_data['item'],
'quantity' => $item_data['quantity'],
'order' => $order,
)
);
}
?>
</tbody>
</table>und bei dieser Datei komplett ersetzen:
order-withdrawal-request-item.php<?php
/**
* Cancel order request item.
*
* This template can be overridden by copying it to yourtheme/woocommerce/forms/order-withdrawal-request-item.php.
*
* HOWEVER, on occasion EU OWB will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @package Vendidero/OrderWithdrawalButton/Templates
* @version 1.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
?>
<tr class="<?php echo esc_attr( 'woocommerce-table__line-item order-withdrawal-request-item' ); ?>">
<td class="woocommerce-table__product-select product-select">
<input class="woocommerce-form__input woocommerce-form__input-checkbox order-withdrawal-request-item-checkbox" name="items[]" type="checkbox" id="item-<?php echo esc_attr( $item->get_id() ); ?>" value="<?php echo esc_attr( $item->get_id() ); ?>" />
</td>
<td class="woocommerce-table__product-name product-name">
<?php
$product = $item->get_product();
if ( $product ) {
// Wir nutzen die Klasse 'gzd-withdrawal-image', um Konflikte zu vermeiden
echo '<div class="gzd-withdrawal-image">';
echo $product->get_image( array( 60, 60 ) );
echo '</div>';
}
$is_visible = $product && $product->is_visible();
$item_sku = $product ? $product->get_sku() : '';
$product_permalink = apply_filters( 'eu_owb_woocommerce_order_item_product_permalink', $is_visible ? $product->get_permalink() : '', $item, $order );
echo wp_kses_post( apply_filters( 'eu_owb_woocommerce_order_item_name', ( $product_permalink ? sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $item->get_name() ) : $item->get_name() ) . ( ! empty( $item_sku ) ? ' <small>(' . esc_html( $item_sku ) . ')</small>' : '' ), $item, $is_visible ) );
?>
</td>
<td class="woocommerce-table__product-quantity product-quantity">
<?php
if ( 1 === $quantity ) :
?>
1<?php endif; ?>
<?php
woocommerce_quantity_input(
array(
'input_name' => 'item[' . esc_attr( $item->get_id() ) . '][quantity]',
'input_value' => $quantity,
'max_value' => $quantity,
'min_value' => 1,
'readonly' => false,
),
$item->get_product()
);
?>
</td>
</tr>Hi Tobias,
nur kurz zur Vollständigkeit: Der Widerrufsbutton ist ab Germanized 4.0 enthalten.
Danke für deine Erläuterungen/Anpassungen. Die Idee mit den Bildern finde ich gut – ich schaue mal, ob sich das gut in der Darstellung (Theme-übergreifend) lösen lässt.
Grüße
You must be logged in to reply to this topic.