当我尝试通过functions.php
获取订单的订单商品时,我在这里遇到此问题:
未捕获的错误:调用未定义的方法WC_Order :: get_order_items()
这是我的代码(我找不到问题):
add_filter( 'wp_nav_menu_objects', 'set_navigation_user_name' );
function set_navigation_user_name( $menu_items ) {
//Get current user
$current_user = wp_get_current_user();
foreach ( $menu_items as $menu_item ) {
if ( '{user_name}' === $menu_item->title ) {
//Get first and lastname from current user
$user_firstname = $current_user->user_firstname;
$user_lastname = $current_user->user_lastname;
$menu_item->title = $user_firstname . ' ' . $user_lastname;
} elseif ( '{available_pay}' === $menu_item->title ) {
$available_pay = 0;
$order_states = array(
'wc-completed',
'wc-pending'
);
$orders = wc_get_orders( array(
'numberposts' => - 1,
'meta_key' => '_customer_user',
'meta_value' => get_current_user_id(),
'post_status' => $order_states
) );
foreach ( $orders as $order ) {
if ( count( $order->get_order_items() ) > 0 ) {
foreach ( $order->get_order_items() as $item_id => $item ) {
//Order pay
$order_pay = wc_get_order_item_meta( $item_id, '_line_total', true );
//Add order pay to available pay
$available_pay += $order_pay;
}
}
}
$menu_item->title = 'Order pay sum: ' . wc_price( $available_pay );
}
}
return $menu_items;
}
答案 0 :(得分:1)
您需要改为使用WC_Order
method get_items()
…
因为Woocommerce不存在WC_Order
get_order_items()
方法...
而且自Woocommerce 3起,您可以使用WC_Order_Item_Product
get_total()
方法代替wc_get_order_item_meta( $item_id, '_line_total', true );
因此,在代码内您将更改以下内容:
foreach ( $orders as $order ) {
if ( count( $order->get_items() ) > 0 ) {
foreach ( $order->get_items() as $item_id => $item ) {
// Add order pay to available pay
$available_pay += $item->get_total();
}
}
}
相关线程: