Получите неформатированные суммы заказа в шаблоне WooCommerce PDF Invoices & Packing Slips - PullRequest
0 голосов
/ 29 ноября 2018

Я сделал копию простого счета-фактуры (это по умолчанию) и создал новый, проблема в том, что я не могу привести строковое значение к плавающей точке.Вот код:

<?php foreach( $this->get_woocommerce_totals() as $key => $total ) : ?>
    <tr class="<?php echo $key; ?>">
        <td class="no-borders"></td>
        <th class="description"><?php echo $total['label']; ?></th>
        <td class="price"><span class="totals-price"><?php echo $total['value']; ?></span></td>
    </tr>
<?php endforeach; ?>

the $total['value']; отображает цену в строковом формате.

Я пытался использовать (float)$total['label'] и floatval($total['label']) для ее приведения, но не сработало,возвращает значение 0.

1 Ответ

0 голосов
/ 01 декабря 2018

Вы не можете получить это на самом деле, но вы можете использовать $key, чтобы нацелиться на total line type, и вы можете использовать $this->order, который является экземпляром объекта WC_Order с любым методом WC_Order.

Чтобы получить общую неформатированную сумму (включая налоги), вы будете использовать $this->order->get_total()

Некоторые из доступных $keys:

  • cart_subtotal
  • discount (если применяются купоны)
  • shipping
  • fee_1234 (если естьэто плата, и где 1234 это идентификатор товара ... они могут быть разными)
  • tax (в зависимости от того, как налоги отображаются в ваших настройках)
  • payment_method (кажется, это скрыто некоторыми CSS)
  • order_total

Итак, в этом коде:

<?php
    // The line totals data array (in a variable)
    $wc_totals = $this->get_woocommerce_totals();

    // Some order unformatted amounts
    $order_total     = $this->order->get_total(); 
    $order_total_tax = $this->order->get_total_tax();

    ## Manipulating amounts (example) ##

    // Order Total (rounding total amount)
    $wc_totals['order_total']['value'] = strip_tags( wc_price( round( $order_total ) ) );
?>
<?php foreach( $wc_totals as $key => $total ) : ?>
    <tr class="<?php echo $key; ?>">
        <td class="no-borders"></td>
        <th class="description"><?php echo $total['label']; ?></th>
        <td class="price"><span class="totals-price"><?php echo $total['value']; ?></span></td>
    </tr>
<?php endforeach; ?>

Протестировано и работает.

Вы также можете добавить дополнительные строки итогов или удалить их с помощью unset () и правильного ключа…

Чтобы добавить строку после строки итоговой отгрузки (пример):

 <?php
    // The line totals data array (in a variable)
    $wc_totals = $this->get_woocommerce_totals();

    $wc_new_totals = []; // Initialising

    foreach ( $wc_totals as $key => $total ) {
        $wc_new_totals[$key] = $total;

        if ( $key === 'shipping' ) {
            $wc_new_totals['shipping_avg'] = [
                'label' => __( "Shipping average" ),
                'value' => __( "15 days" ),
            ];
        }
    }
?>
<?php foreach( $wc_new_totals as $key => $total ) : ?>
    <tr class="<?php echo $key; ?>">
        <td class="no-borders"></td>
        <th class="description"><?php echo $total['label']; ?></th>
        <td class="price"><span class="totals-price"><?php echo $total['value']; ?></span></td>
    </tr>
<?php endforeach; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...