私は、広告申込情報IDの1つから関連する注文(注文ID)を取得しようとしています。Woocommerce item_idの1つからorder_idを取得しますか?
例えば1ケース: 順序を編集し、Woocommerceのみフック"woocommerce_before_delete_order_item"
を提供するのみ$item_id
を通過(のAjaxによって行わ)行項目を削除します。 (woo関数はWP環境ではなくSQLを実行します)。私はいくつかのアクションを行うには、 "所属"オーダーIDが必要です!
これまでのところ私の解決策は、すべての注文をループして、アイテムIDを比較し、一致が発生したときに注文IDを折り返して返すことです。
これは、現在の店舗で10000発注以上の場合、遅くなるか、かさばった不器用なものになります。
これは動作しません:
wp_get_post_parent_id ($item_id)
しかし、イムは、同様の呼び出しがあると期待して、または私はDB SQL
検索を行う必要がありますか? mySQL
を含むすべての回答は、「コピー&ペースト準備完了」にしてください。私はPHPで素晴らしいですが、私自身のSQLを記述したり、処理したりしません。
ありがとうございました!以下は、私の解決策は、これまでのところです:
$order_id = my_wc_get_order_from_item_id($item_id);
function my_wc_get_order_from_item_id($id) {
$orders = get_posts('post_type=shop_order&numberposts=-1&post_status=publish');
foreach($orders as $obj) {
$order = new WC_Order($obj->ID);
if (count($order->get_items('line_item')) > 0) {
foreach($order->get_items('line_item') as $item_id => $item) {
if($item_id == $id) $return_value = $obj->ID;
if(isset($return_value)) break;
}
}
unset($order);
if(isset($return_value)) break;
}
if(isset($return_value)) return $return_value;
else return 0;
}
エクセレント:https://docs.woothemes.com/wc-apidocs/source-class-WC_Abstract_Order.html#1239 – LoicTheAztec
ありがとう!どのようなリンクですか?行番号は '' line_tax''を指していますが、この質問/回答には関係していないようです。 – helgatheviking
WC API DOCSの行番号に問題があるようです。私のURLを見ると、1239行目を指していますが、1277行目を示しているので... 1239行目はあなたのコードによく似ていて、get_items()関数に関連しています – LoicTheAztec