Как обновить сборы в Woocommerce для ПУНКТА с помощью do_action(), когда он был отредактирован

Итак, у меня есть эта страница редактирования заказа, которая позволяет моему клиенту повторно редактировать заказ. Проблема заключается в том, что плата PayPal, которую я установил, не будет обновляться с общей суммой товара, и я пытался включить общую сумму заказа в поля nonce, а затем редактировать их при изменении с помощью Javascript, однако, когда я добавляю поле и сохраняю его, я получаю вызов неопределенный метод WC_Order_Item_Fee::set_subtotal() ошибка.

PHP:

<?php 
$order = wc_get_order( absint( $_REQUEST['id'] ) );
$paypal_fee = 0;
foreach( $order->get_items('fee') as $item_id => $item_fee ){
     $fee_name = $item_fee->get_name();
     if ($fee_name == 'Paypal Fee') {
          // The fee total amount
          $fee_total = $item_fee->get_total();

          // // The fee total tax amount
          // $fee_total_tax = $item_fee->get_total_tax();

          $paypal_fee = $fee_total;
     }
}
$price = $order->get_item_total( $item );
?>

HTML:

<form id="wcpv-vendor-order-detail" method="POST">
     <input type="hidden" name="id"      value="<?php echo $id; ?>" />
     <input type="hidden" name="item_id" value="<?php echo $item_id; ?>" />
     <input type="hidden" name="page"    value="wcpv-vendor-order" />
     <input type="hidden" name="action"  value="confirmed_edit_item" />

     <?php wp_nonce_field( 'website-confirmed-edit-item', '_wpnonce' ); ?>

     <p>
          <table>
               <tr>
                    <th>
                         <label for="price"><?php echo $product_name; ?></label>
                    </th>
                    <td>
                         <input type="text" class="wc_input_price" id="price" name="price" value="<?php echo $price; ?>" />
                         <input type="text" class="wc_input_fee" id="fee" name="fee" value="<?php echo $paypal_fee; ?>" />
                    </td>
               </tr>
          </table>
     </p>

     <?php submit_button( __( 'Save new price', 'website' ), 'delete' ); ?>

</form>

Я попытался использовать Auto добавить или обновить пользовательскую комиссию с помощью административного редактирования заказов в WooCommerce код ответа в моем functions.php, надеясь, что она сработает, когда кто-либо нажмет цену редактирования. Но это все еще не работает.


person Ari Patwary    schedule 14.01.2021    source источник
comment
Где вы используете WC_Order_Item_Fee::set_subtotal()?   -  person LoicTheAztec    schedule 15.01.2021
comment
@LoicTheAztec Я нет, но это ошибка, которая в конечном итоге появляется.   -  person Ari Patwary    schedule 15.01.2021
comment
Итак, где-то есть что-то еще, что создает проблемы с использованием WC_Order_Item_Fee несуществующего метода set_subtotal(), поскольку мы не видим этого в предоставленном вами коде. Обратите внимание, что вопрос должен быть обновлен, чтобы включить желаемое поведение, конкретную проблему или ошибку, и кратчайший код, необходимый для воспроизведения проблемы. Предоставленный вами код не является тестируемый, см. Как создать минимальный воспроизводимый пример  -  person LoicTheAztec    schedule 15.01.2021
comment
Чтобы закончить, не используйте хук woocommerce_order_after_calculate_totals из моего кода ответа, вместо этого попробуйте использовать код внутри функции, который показывает, как установить или обновить плату за заказ.   -  person LoicTheAztec    schedule 15.01.2021
comment
@LoicTheAztec добавил содержимое функции в html-vendor-order-edit-page.php сверху, и это все равно не сработало.   -  person Ari Patwary    schedule 15.01.2021