Различные сообщения, основанные на странице WooCommerce - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь изменить сообщения, отображаемые при добавлении товара в корзину и / или обновлении корзины, подключив к woocommerce_add_message. Это вообще ничего не показывает, и мне интересно, почему.

Я пробовал echo и пробовал return__( Вот код:

add_filter('woocommerce_add_message', 'change_cart_message', 10);
function change_cart_message() {

    $ncst = WC()->cart->subtotal;

    if ( is_checkout() ) {
        echo 'Your new order subtotal is: '.$ncst.'. <a style="color: green;" href="#customer_details">Ready to checkout?</a>';
    }
    elseif ( is_product() ) {
        echo 'Your new order subtotal is: '.$ncst.'. <a style="color: green;" href="'.wc_get_checkout_url().'">Ready to checkout?</a>';
    }
    else {
        echo 'Your new order subtotal is: '.$ncst.'. <a style="color: green;" href="'.wc_get_checkout_url().'">Ready to checkout?</a>';
    } 
}

Что я делаю не так?

1 Ответ

0 голосов
/ 25 января 2019

Важное замечание: у ловушки фильтра всегда есть переменный аргумент, который должен быть возвращен.

При использовании ловушки фильтра вам всегда нужно для возврата аргумента отфильтрованного значения (но не для его вывода)…

Также ваш код может быть упрощен и сжат:

add_filter('woocommerce_add_message', 'change_cart_message', 10, 1 );
function change_cart_message( $message ) {

    $subtotal = WC()->cart->subtotal;

    $href = is_checkout() ? '#customer_details' : wc_get_checkout_url();

    return sprintf(  __("Your new order subtotal is: %s. %s"), wc_price($subtotal),
        '<a class="button alt" href="'.$href.'">' . __("Ready to checkout?") . '</a>' );
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

enter image description here

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