Woocommerce从订单中订购客户和付款详细信息


Woocommerce Order Customer and Payment Details from Order

我在woocommerce_payment_complete_order_status过滤器中有$order = new WCOrder( $orderid );。我可以从那里获得有关订单的大量信息,但我想从$order获取客户的电话和电子邮件地址,如管理界面的"编辑订单"页面上所示。我还想获得交易费用(例如,Stripe 或 PayPal 向我收取的交易费用)(如果有的话)。不过,您如何从$order获得这些值 - 我在快速的 WooCommerce 文档中丢失了踪迹。?这是我到目前为止的代码:

  public function my_hook_function( $order_status, $order_id ) {
    $order = new WC_Order( $order_id );
    $num_items = count( $order->get_items() );
    $ret = array();
    $ret["billing_address"] = $order->get_formatted_billing_address();
    $ret["shipping_address"] = $order->get_formatted_shipping_address();
    $ret["cart_discount"] = $order->get_cart_discount();
    $ret["cart_tax"] = $order->get_cart_tax();
    $ret["order_notes"] = $order->get_customer_order_notes();
    $ret["items"] = array();
    if ( $num_items > 0 ) {
      foreach( $order->get_items() as $item ) {
        if ( 'line_item' == $item['type'] ) {
          $item_data = array();
          $item_data['name'] = $item['name'];
          $item_data['quantity'] = $item['item_meta']['_qty'][0];
          $item_data['product_id'] = $item['item_meta']['_product_id'][0];
          $item_data['subtotal'] = $item['item_meta']['_line_subtotal'][0];
          $ret["items"][] = $item_data;
        }
      }
    }
    // do stuff with $ret
    return $order_status;
  }

订单详细信息模板中显示以下代码片段:

if ( $order->billing_email ) echo '<dt>' . __( 'Email:', 'woocommerce' ) . '</dt><dd>' . $order->billing_email . '</dd>';
if ( $order->billing_phone ) echo '<dt>' . __( 'Telephone:', 'woocommerce' ) . '</dt><dd>' . $order->billing_phone . '</dd>';

WC_Abstract_Order类的这些属性并不明显,因为它们隐藏在魔法方法__set和__get后面。