質問: groups_user_group::create($user_group); if(!result) { return; // todo: add error message + email? } } 技術的な詳細:ワードプレスのバージョン:3.8woocommerceのバージョン:2.1
回答: wc_orderクラスの__get()メソッドから、user_idプロパティが、問題のオーダーの_customer_user post metaから取得されているか、格納されていることがわかります。/** * __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がない場合に備えてある種のフォールバックを望むかもしれません。 woocommerce 3.0用アップデート 上記のすべてを無視してください。コメントで指摘されているように、この情報を得るための直接的な方法があります。実際、ほとんどすべての「マジックメソッド」は削除されており、オブジェクトプロパティに直接アクセスするとphp警告がスローされます。$order = wc_get_order( $order_id ); $user = $order->get_user(); $user_id = $order->get_user_id();