首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WooCommerce:允许在"add_fee function“标签中使用HTML标签

WooCommerce:允许在"add_fee function“标签中使用HTML标签
EN

Stack Overflow用户
提问于 2021-03-11 06:35:31
回答 2查看 274关注 0票数 2

我使用以下代码根据支付方式添加自定义费用:

代码语言:javascript
复制
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' );

我想使用HTML在标签旁边显示一个图标,如下所示:

代码语言:javascript
复制
     $label =  'PayPal Fee <span>HTML</span>';

但是,对于HTML标记,字符串将被(esc_html)转义。我怎样才能使它与HTML标签一起显示我的图标?

EN

回答 2

Stack Overflow用户

发布于 2021-03-14 14:25:17

在WP esc_html函数中有一个叫做esc_html的过滤器钩子,你可以使用它。您可以将图标HTML附加到标签上。检查下面的代码。代码将放入您的活动主题functions.php文件中。

代码语言:javascript
复制
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 );
票数 2
EN

Stack Overflow用户

发布于 2021-03-14 15:14:45

另一种方法是将模板从woocommerce/templates目录复制到您的主题(或子主题)中:

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

在这些文件中,我们将找到esc_html函数所在的代码,并根据需要对其进行编辑:

代码语言:javascript
复制
    <?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; ?>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66573889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档