Избегайте очистки значения настраиваемого поля при обновлении итоговой корзины в Ajax - PullRequest
0 голосов
/ 26 октября 2018

У меня возникла проблема с выводом пользовательского поля в шаблоне cart-totals.php WooCommerce.

Я добавил пользовательскую разметку <tr> в тег <table>, найденный внутри корзины.-totals.php, который показывает ваш промежуточный итог, налоги, поля для расчета доставки.

Моя функция просто проверяет диапазон значений, хранящихся в настраиваемом поле, и выводит текст, проблема, которую яИмеется в том, что, когда я меняю свой вариант доставки, скажем, с авиаперевозки на землю, корзина обновляется через ajax и меняет значение моего настраиваемого поля на пустое.Это не происходит при обновлении количества в корзине, обновлении итогов или при загрузке страницы, а только при изменении варианта доставки.

Любой совет, чтобы это исправить, будет очень признателен!

<table cellspacing="0" class="shop_table shop_table_responsive">

  <tr class="cart-tier-discount">

    <th>Rewards Discount</th>

    <td>

      <?php
        $progress = get_the_author_meta( 'tier_progress_value', $user->ID );

        if ( $progress > 0.01 && $progress < 150 ) {
          echo '0%';
        }
        if ( $progress >= 150 && $progress < 300 ) {
          echo '10%';
        }
        if ( $progress >= 300 && $progress < 500 ) {
          echo '15%';
        }
        if ( $progress >= 500 ) {
          echo '20%';

        } 
      ?>

    </td>

  </tr> 

</table>

1 Ответ

0 голосов
/ 26 октября 2018

Попробуйте вместо этого (без редактирования cart_totals.php шаблона) .Поэтому вам потребуется прежде, чем временно удалить ваши изменения из cart_totals.php файла шаблона.

Код:

add_action('woocommerce_cart_totals_before_shipping', 'cart_totals_rewards_before_shipping'  );
function cart_totals_rewards_before_shipping() {
    // Only for logged in users
    if ( ! is_user_logged_in() ) return;

    $progress = (int) get_user_meta( get_current_user_id(), 'tier_progress_value', true );

    if ( $progress >= 0 && $progress < 150 )
        $percentage = '0%';
    elseif ( $progress >= 150 && $progress < 300 )
        $percentage = '10%';
    elseif ( $progress >= 300 && $progress < 500 )
        $percentage = '15%';
    else
        $percentage = '20%';

    echo  '<tr class="cart-tier-discount">
    <th>' . __("Rewards Discount", "") . '</th>
    <td>' . $percentage .'</td>
    </tr>';
}

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

Тогда при изменении метода доставки на событие обновления итогов корзины значение все равно остается:

enter image description here

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