如何在Woocommerce的单独页面上显示特定产品(id)的订单详细信息(我的帐户)



我想在单独的页面上显示在wooccommerce中找到的订单表,我的帐户最近为特定产品id订购的订单。更准确地说,如果订单有product_id为X.的产品,则显示当前用户的所有最近订单

我正在尝试使用这些参考:

Wooccommerce-如何在单独的页面上显示订单详细信息(我的账户(

从Woocommerce 中的产品ID获取所有订单ID

Woocommerce:获取产品的所有订单

但我无法将$product_id$user_id = get_current_user_id();关联起来,以便当前用户针对特定产品id的所有订单都可以显示在单独的页面上。

编辑:添加了代码。我试过这个代码,但不起作用。

function orders_from_product_id( $product_id ) {
$order_statuses = array('wc-on-hold', 'wc-processing', 'wc-completed');
$customer_user_id = get_current_user_id(); // current user ID here for example
$customer_orders = wc_get_orders( array(
'meta_key' => '_customer_user',
'meta_value' => $customer_user_id,
'post_status' => $order_statuses,
'numberposts' => -1
) );
foreach($customer_orders as $order ){
$order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
foreach($order->get_items() as $item_id => $item){
$product_id = method_exists( $item, 'get_product_id' ) ? $item->get_product_id() : $item['product_id'];
if ( $product_id == 326 ) {
ob_start();
wc_get_template( 'myaccount/my-orders.php', array(
'current_user'  => get_user_by( 'id', $user_id),
'order_count'   => $order_count
) );
return ob_get_clean();
} else {
echo '<p> You donot have any orders.</p>';
}
} 
}
}
add_shortcode('woocommerce_orders', 'orders_from_product_id');

从该代码中,您可以获得用户购买的当前用户产品id。

// GET CURR USER
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) return;
// GET USER ORDERS (COMPLETED + PROCESSING)
$customer_orders = get_posts( array(
'numberposts' => -1,
'meta_key'    => '_customer_user',
'meta_value'  => $current_user->ID,
'post_type'   => wc_get_order_types(),
'post_status' => array_keys( wc_get_is_paid_statuses() ),
) );
// LOOP THROUGH ORDERS AND GET PRODUCT IDS
if ( ! $customer_orders ) return;
$product_ids = array();
foreach ( $customer_orders as $customer_order ) {
$order = wc_get_order( $customer_order->ID );
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item->get_product_id();
$product_ids[] = $product_id;
}
}
$product_ids = array_unique( $product_ids );

最新更新