Я пытаюсь понять, как определить продукт в этом коде после внесения в него некоторых изменений на основе ответа на мой предыдущий вопрос Почему шорткод заказа WooCommerce создает уведомление о плагине на пользовательской странице благодарности?
Сообщение уведомления изменилось, и теперь оно просит меня определить продукт. Это уведомление:
Notice: Undefined variable: product in /wp-content/themes/storefront/functions.php on line 842
Уведомление относится к этой строке:
'purchase_note' => $product ? $product->get_purchase_note() : '',
Это полный код:
function order_cost_breakdown(){
if ( isset( $_GET['order_id']) && $_GET['order_id'] > 0 ) {
$order_id = (int) esc_attr( $_GET['order_id'] );
$order = wc_get_order( $order_id );
$order_data = $order->get_data();
$show_purchase_note = $order->has_status( apply_filters( 'woocommerce_purchase_note_order_statuses', array( 'completed', 'processing' ) ) );
ob_start();
?>
<div class = "woocommerce-account woocommerce-page"><div class = "woocommerce">
<table class = "shop_table order_details">
<thead>
<tr>
<th class = "product-name"><?php _e( 'Product', 'woocommerce' ); ?></th>
<th class = "product-total"><?php _e( 'Total', 'woocommerce' ); ?></th>
</tr>
</thead>
<tbody>
<?php foreach ( $order->get_items() as $item_id => $item ) {
wc_get_template( 'order/order-details-item.php', array (
'order' => $order,
'item_id' => $item_id,
'item' => $item,
'product' => apply_filters( 'woocommerce_order_item_product', $item->get_product( $item ), $item ),
'show_purchase_note' => $show_purchase_note,
'purchase_note' => $product ? $product->get_purchase_note() : '',
) );
}
?>
<?php do_action( 'woocommerce_order_items_table', $order ); ?>
</tbody>
<tfoot>
<?php
foreach ( $order->get_order_item_totals() as $key => $total ){
?>
<tr>
<th scope = "row"><?php echo $total['label']; ?></th>
<td><?php echo $total['value']; ?></td>
</tr>
<?php
}
?>
</tfoot>
</table>
</div>
</div>
<?php
return ob_get_clean();
}
}
Любой совет полезен, так как я явно не эксперт.
Чтобы исправить уведомление
Заменять
<?php foreach ( $order->get_items() as $item_id => $item ) {
wc_get_template( 'order/order-details-item.php', array (
'order' => $order,
'item_id' => $item_id,
'item' => $item,
'product' => apply_filters( 'woocommerce_order_item_product', $item->get_product( $item ), $item ),
'show_purchase_note' => $show_purchase_note,
'purchase_note' => $product ? $product->get_purchase_note() : '',
) );
}
?>
С
<?php foreach ( $order->get_items() as $item_id => $item ) {
$product = $item->get_product();
wc_get_template( 'order/order-details-item.php', array (
'order' => $order,
'item_id' => $item_id,
'item' => $item,
'product' => apply_filters( 'woocommerce_order_item_product', $item->get_product( $item ), $item ),
'show_purchase_note' => $show_purchase_note,
'purchase_note' => $product ? $product->get_purchase_note() : '',
));
}
?>
Этого должно быть достаточно
Это произошло! Большое спасибо :)