我想删除(而不是隐藏)购物车和结帐页面上的第一个付款日期,因为这对我的客户来说非常混乱。 我找不到在哪里以及如何覆盖html输出。
信息是从woocommerce订阅功能(wcs-cart-functions.php)中添加的,如下所示:
function wcs_add_cart_first_renewal_payment_date( $order_total_html, $cart ) {
if ( 0 !== $cart->next_payment_date ) {
$first_renewal_date = date_i18n( wc_date_format(), wcs_date_to_time( get_date_from_gmt( $cart->next_payment_date ) ) );
// translators: placeholder is a date
$order_total_html .= '<div class="first-payment-date"><small>' . sprintf( __( 'First renewal: %s', 'woocommerce-subscriptions' ), $first_renewal_date ) . '</small></div>';
}
return $order_total_html;
}
add_filter( 'wcs_cart_totals_order_total_html', 'wcs_add_cart_first_renewal_payment_date', 10, 2 );
出于明显的原因,我不想修改核心文件。
我试图在主题CSS中添加display:none。它可以工作,但只隐藏信息。
.woocommerce-checkout-review-order-table .first-payment-date {
display: none;
}
感谢您的线索和想法。 弗雷德
答案 0 :(得分:0)
好吧,似乎没有人提出我的问题,我对自己的回答不是最干净的解决方案(我认为),并希望没有隐藏的副作用。 我通过重置html输出来创建新功能来覆盖核心功能:
/* Hide information of first payment date by override order_total_html output */
add_filter( 'wcs_cart_totals_order_total_html', 'hide_first_renewal_payment_date', 100, 2 );
function hide_first_renewal_payment_date( $order_total_html, $cart ) {
$order_total_html = '';
$value = '<strong>' . $cart->get_total() . '</strong> ';
// If prices are tax inclusive, show taxes here
if ( wc_tax_enabled() && $cart->tax_display_cart == 'incl' ) {
$tax_string_array = array();
if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) {
foreach ( $cart->get_tax_totals() as $code => $tax ) {
$tax_string_array[] = sprintf( '%s %s', $tax->formatted_amount, $tax->label );
}
} else {
$tax_string_array[] = sprintf( '%s %s', wc_price( $cart->get_taxes_total( true, true ) ), WC()->countries->tax_or_vat() );
}
if ( ! empty( $tax_string_array ) ) {
// translators: placeholder is price string, denotes tax included in cart/order total
$value .= '<small class="includes_tax">' . sprintf( _x( '(Includes %s)', 'includes tax', 'woocommerce-subscriptions' ), implode( ', ', $tax_string_array ) ) . '</small>';
}
}
$order_total_html .= $value;
return $order_total_html;
}
如果有人可以为我提供更好的解决方案,我将感到非常高兴。
答案 1 :(得分:0)
将该函数复制到您的function.php文件中,并给它一个不同的名称(我在我的名字中添加了“ _custom”)。进行所需的任何更改。
然后将以下过滤器添加到function.php中...
// This removes the default function
remove_filter( 'wcs_cart_totals_order_total_html', 'wcs_add_cart_first_renewal_payment_date', 10, 2 );
// This runs your version of the function (Note that I'm calling the new '_custom' function)
add_filter( 'wcs_cart_totals_order_total_html', 'wcs_add_cart_first_renewal_payment_date_custom', 10, 2 );
希望有帮助。