Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WooCommerce:允许在“添加费用功能”标签中使用HTML标记_Php_Wordpress_Woocommerce - Fatal编程技术网

Php WooCommerce:允许在“添加费用功能”标签中使用HTML标记

Php WooCommerce:允许在“添加费用功能”标签中使用HTML标记,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在使用以下代码根据付款方式添加自定义费用: 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_su

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

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在标签旁边显示一个图标,如下所示:

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

但是,字符串将被esc_html转义为html标记。如何使用HTML标记来显示我的图标?

在WP esc_HTML函数中有一个名为esc_HTML的过滤器挂钩,您可以使用它。您可以将图标HTML附加到标签上。检查下面的代码。代码将放入活动的theme functions.php文件中

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 );

另一种选择是将模板从woocommerce/templates目录复制到您的主题或子主题:

checkout/review-order.php cart/cart-totals.php 在这些文件中,我们将找到esc_html函数所在的代码,并根据需要进行编辑:

为了获得更好的性能,is|cart | | is| checkout应该包装add_filter函数。因此,如果是购物车| | | | | | | | | | | |是|结帐{添加|过滤器'esc|html',在| paypal |费用标签|旁边显示|图标|,10,2;}如果$text='paypal{$safe |}