从__get()
中的方法WC_Order
你可以看到user_id
属性取自/存储为_customer_user
发布有关订单的元数据。
/**
* __get function.
*
* @access public
* @param mixed $key
* @return mixed
*/
public function __get( $key ) {
// Get values or default if not set
if ( \'completed_date\' == $key ) {
$value = ( $value = get_post_meta( $this->id, \'_completed_date\', true ) ) ? $value : $this->modified_date;
} elseif ( \'user_id\' == $key ) {
$value = ( $value = get_post_meta( $this->id, \'_customer_user\', true ) ) ? absint( $value ) : \'\';
} else {
$value = get_post_meta( $this->id, \'_\' . $key, true );
}
return $value;
}
因此,您可以在代码中获取用户id,如下所示:
$order = new WC_Order( $order_id );
$user_id = $order->user_id;
我想你不会允许客人结账,但如果没有用户id,你可能需要某种回退。
Update for WooCommerce 3.0
忽略以上所有内容。正如评论中所指出的,有一些直接的方法可以获得这些信息。事实上,几乎所有的“神奇方法”都已被删除,直接访问对象属性将引发PHP警告。
$order = wc_get_order( $order_id );
$user = $order->get_user();
$user_id = $order->get_user_id();