我使用以下代码根据支付方式添加自定义费用:
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>';但是,对于HTML标记,字符串将被(esc_html)转义。我怎样才能使它与HTML标签一起显示我的图标?
发布于 2021-03-14 14:25:17
在WP esc_html函数中有一个叫做esc_html的过滤器钩子,你可以使用它。您可以将图标HTML附加到标签上。检查下面的代码。代码将放入您的活动主题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 );发布于 2021-03-14 15:14:45
另一种方法是将模板从woocommerce/templates目录复制到您的主题(或子主题)中:
在这些文件中,我们将找到esc_html函数所在的代码,并根据需要对其进行编辑:
<?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; ?>https://stackoverflow.com/questions/66573889
复制相似问题