如何调用woocommerce的订单列表

woocommerce商城专区WordPress技术博客wp应用技术

woocommerce的订单列表

woocommerce的订单列表在我的账户(我的个人中心)下的订单链接打开可以看到如下图:

如何调用woocommerce的订单列表

订单列表的模板在woocommerce模板文件中的myaccount/orders.php中。

那么如果我们想要将这个订单列表,比如“未完成的订单”调用到其他的地方应该如何去做呢?

 

woocommerce的订单列表调用

woocommerce的我的个人中心进入主页是比较简单的界面,只有一段文字和几个链接,这样一来,和我们所看到的大部分的电子商务网站就很不一样了。

一般的电子商务网站,在我的个人中心主页会放一个“未完成的订单”等等信息,让这个个人中心内容更加丰富。

woocommerce的默认个人中心如下图所示:

如何调用woocommerce的订单列表

而我们所改造的个人中心,调用了未完成的订单,以及特色推荐产品:

如何调用woocommerce的订单列表

这样的设定和我们所看到的很多电子商务网站就非常接近了,用户体验也更好。

那么我们如何将订单列表调用到其他的地方呢?

首先我们需要使用woocommerce的钩子,获取订单列表的数据:

global $woocommerce;
$customer_orders = get_posts( apply_filters( 'woocommerce_my_account_my_orders_query', array(
'numberposts' => $order_count,
'meta_key'    => '_customer_user',
'meta_value'  => get_current_user_id(),
'post_type'   => wc_get_order_types( 'view-orders' ),
'post_status' => array_keys( wc_get_order_statuses() ),
'posts_per_page' => 10,//每页显示10个
) ) );

然后我们建立一个循环,输出每一条订单的内容:

foreach ( $customer_orders as $customer_order ){
$order      = wc_get_order( $customer_order );
$item_count = $order->get_item_count();
if( $order->get_status()!="completed"){//过滤未完成的订单
//此处输出订单的内容
echo  $order->get_order_number();//订单号
echo  wc_get_order_status_name( $order->get_status() );//订单状态
echo  order_details_in($order->get_order_number());//下面的函数调用订单每个商品的简介
echo $item_count;//这个订单中一共有多少个商品
echo $order->get_formatted_order_total();//总金额
}}

 

上面的循环就可以将我们订单输出出来,你可以使用订单的状态进行过滤,将未完成的订单过滤出来。

如果你想要调用每一条订单下的产品简介信息 ,那么可以通过订单号进行调用,使用函数添加进入上面的循环

function  order_details_in($order_number){
$order = wc_get_order( $order_number );//使用订单号获取信息
foreach( $order->get_items() as $item_id => $item ) {//开始循环
$product = apply_filters( 'woocommerce_order_item_product', $order->get_product_from_item( $item ), $item );
$is_visible        = $product && $product->is_visible();
//获取产品信息
$image   = get_the_post_thumbnail( $item['product_id'], apply_filters( 'single_product_small_thumbnail_size', 'shop_thumbnail' ), array('title'     => $item['name'],'alt'    => $item['name']) );//获取略缩图
$product_permalink = get_permalink( $item['product_id'] );//获取产品链接
echo   $image;//输出产品的特色图片
echo   $product_permalink//输出产品的链接
echo $item['name'];//产品名称
echo $item['qty'];//购买数量
};
return $order_details;
}

 

以上的代码是将可输出的内容都输出出来了,具体的样式和html结构还需要自己的去组件好。

这样我们就可以讲订单列表输出到任意我们想要的地方了。

 

上一篇:

下一篇:

文章评论

您好!请登录

取消回复
  1. Recoveryrus 回复

    不知道博主还在不,想问一个问题,就是我的woo在用户使用paypal支付成功以后,订单状态还是不变,依旧是未支付,要手动去改变才行,这个问题该怎么解决呢,从哪里入手?谢谢


    • WEB主题公园
      WEB主题公园-管理员 回复

      是否升级到woocommerce到最新? 我查阅了一下英文资料,某个论坛的版主回复说这是一个bug,出现问题的woocommerce大概是2.9,现在已经3.9我不知道这个bug是否已经被woocommerce官方修复过了。


展开更多