Woocommerce подписки, удалить дату первого платежа на странице корзины и оформления заказа - PullRequest
1 голос
/ 15 января 2020

Я хотел бы удалить (а не просто скрыть) дату первого платежа на страницах корзины и оформления заказа, потому что это очень запутанно для моего клиента. Я не могу найти, где и как переопределить вывод 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. Это работает, но просто скрывает информацию.

.woocommerce-checkout-review-order-table .first-payment-date {
    display: none;
}

Спасибо за ваши подсказки и идеи. Fred

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Скопируйте эту функцию в вашу функцию. Файл php и дайте ему другое имя (я добавил '_custom' к своему). Внесите любые изменения, которые вы хотите.

Затем добавьте следующие фильтры в функцию. php ...

// Это удаляет функцию по умолчанию

remove_filter ('wcs_cart_totals_order_total_ html', 'wcs_add_cart_first_renewal_payment_date ', 10, 2);

// Это запускает вашу версию функции (обратите внимание, что я вызываю новую функцию' _custom ')

add_filter (' wcs_cart_totals_order_total_ html ' , 'wcs_add_cart_first_renewal_payment_date_custom', 10, 2);

Надеюсь, это поможет.

0 голосов
/ 19 января 2020

Ну, так как никто, похоже, не дошел до моего вопроса, я отвечаю себе не самым чистым решением (на мой взгляд) и надеюсь, что не будет никакого скрытого побочного эффекта. Я переопределяю основную функцию, создавая новую, сбрасывая вывод 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;
}

Я был бы рад, если бы кто-то мог указать мне на лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...