WooCommerce: HTML-Tags im Label „add_fee function“ zulassen

Lesezeit: 2 Minuten

WooCommerce HTML Tags im Label „add fee function zulassen
John Smith

Ich verwende den folgenden Code, um eine benutzerdefinierte Gebühr basierend auf der Zahlungsmethode hinzuzufügen:

function stackoverflow_apply_payment_gateway_fee() {
 $payment_method = WC()->session->get( 'chosen_payment_method' );
 if( $payment_method == 'paypal' ) {
 $label="PayPal Fee <span>HTML</span>";
 $cart_subtotal_fee = WC()->cart->get_subtotal();
 $amount = 5;
 WC()->cart->add_fee( $label, $amount, true, 'standard' );
 }
}
add_action( 'woocommerce_cart_calculate_fees', 'stackoverflow_apply_payment_gateway_fee' );

Ich möchte ein Symbol neben dem Label mit HTML anzeigen, etwa so:

     $label="PayPal Fee <span>HTML</span>";

Allerdings wird die Zeichenfolge für HTML-Tags (esc_html) maskiert. Wie kann ich dafür sorgen, dass es mit HTML-Tags funktioniert, um mein Symbol anzuzeigen?

Es gibt einen Filter-Hook namens esc_html in WP esc_html Funktion, die Sie verwenden können. Sie können Ihr Symbol-HTML an Ihr Etikett anhängen. Überprüfen Sie den folgenden Code. Code wird in Ihre aktive Design-functions.php-Datei eingefügt.

function stackoverflow_apply_payment_gateway_fee() {
    $payment_method = WC()->session->get( 'chosen_payment_method' );
    if( $payment_method == 'paypal' ) {
        $label="PayPal Fee";
        $cart_subtotal_fee = WC()->cart->get_subtotal();
        $amount            = 5;
        WC()->cart->add_fee( $label, $amount, true, 'standard' );
    }
}
add_action( 'woocommerce_cart_calculate_fees', 'stackoverflow_apply_payment_gateway_fee' );

function show_an_icon_next_to_the_paypal_fee_label( $safe_text, $text ){
    if( ( is_cart() || is_checkout() ) && $text == 'PayPal Fee' ){
        $safe_text = $safe_text.'<span>HTML</span>';
    }
    return $safe_text;
}
add_filter( 'esc_html', 'show_an_icon_next_to_the_paypal_fee_label', 10, 2 );

  • Für eine bessere Leistung, is_cart() || is_checkout() wickeln soll add_filter Funktion. Also if (is_cart() || is_checkout()) { add_filter( ‘esc_html’, ‘show_an_icon_next_to_the_paypal_fee_label’, 10, 2 ); } und if($text == ‘PayPal Fee’ ){ $safe_text = $safe_text.’HTML‘; }

    – Intelligente Weblösungen

    15. März 2021 um 15:51 Uhr


Eine andere Alternative wäre, die Vorlagen aus dem in dein Theme (oder Child-Theme) zu kopieren woocommerce/templates Verzeichnis:

  • checkout/review-order.php
  • cart/cart-totals.php

In diesen Dateien finden Sie diesen Code, wo die esc_html Funktion ist, und bearbeiten Sie sie nach Bedarf:

    <?php foreach ( WC()->cart->get_fees() as $fee ) : ?>
        <tr class="fee">
            <th><?php echo esc_html( $fee->name ); ?></th>
            <td data-title="<?php echo esc_attr( $fee->name ); /* Leave this one */?>"><?php wc_cart_totals_fee_html( $fee ); ?></td>
        </tr>
    <?php endforeach; ?>

1004450cookie-checkWooCommerce: HTML-Tags im Label „add_fee function“ zulassen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy