我是woocommerce的新手,我对php没有太多经验,但我试图为我的一个朋友获得一个简单的导出订单到xml。
add_action('woocommerce_order_status_completed','complete_orders',14,0);
function completed_orders($order_id)
{
$id =$post->ID;
$args = array(
'id' =>$id,
'post_type' =>'shop_order',
'meta_key' =>'_order_id',
'posts_per_page'=>'-1'
);
$my_query = new WP_Query($args);
if($my_query->have_posts()){
$my_query->next_post();
$customer_order = $my_query->posts;
$order = new WC_Order($order_id);
$order->populate($customer_order);
$orderdata = (array) $order;
$fields = array_values($orderdata);
$xmlOrder = new DOMDocument();
array_to_xml($fields,$xmlOrder);
$xmlOrder->saveXML('/wp-order/'. $order_id);
}
从上面的代码得到的是,当订单完成后它将获取订单ID然后将其转换为数组,然后我有另一种方法将该数组转换为xml
function array_to_xml($order,$xmlOrder)
{
foreach($order as $key=>$value)
{
if(is_array($value))
{
$n = $xmlOrder->createElement($key)
$node->appendChild($n);
$array2xml($n,$value);
}
else
{
$attr = $xmlOrder->createAttribute($key);
$attr->value =$value;
$node->appendChild($attr);
}
}
}
我必须做错事,如果有人可以帮助我或指出我的方向很好。
编辑: 我没有得到任何回应,但是我不知道我是否正确行事。这是我第一次使用woocommerce,而且文档并没有真正说太多。