根据在 WooCommerce 中购买的数量为每个订单项目做一些事情
Do something for each order item based on quantity purchased in WooCommerce
我正在使用 PHP Post 为用户购买的每个产品创建一个具有不同 API 的帐户。
我当前的代码如下所示:
add_action( 'woocommerce_thankyou', 'create_account' );
function create_account( $order_id ){
$order = wc_get_order( $order_id );
$items = $order->get_items();
foreach ( $items as $item_id => $item ) {
$product_id = $item->get_variation_id() ? $item->get_variation_id() : $item->get_product_id();
if ( $product_id === xxx) {
//do something
}
if ( $product_id === yyy) {
//do something else
}
}
现在如果购买了产品 xxx 和 yyy,该函数会正确循环并创建 2 个帐户。
但是我的问题是:
现在它只为 xxx 创建一个帐户,为 yyy 创建一个帐户,无论购买多少。
如果我购买“xxx”5次(数量5)和“yyy”3次(数量3),我想要8 (5 + 3) 待创建的个人帐户。我以为foreach循环会做这个,但它似乎没有考虑订单商品数量。
如何处理订单商品数量并为每个产品单元做些什么?
使用基于订单商品数量的 FOR
循环以这种方式处理基于数量的事件:
add_action( 'woocommerce_thankyou', 'create_account' );
function create_account( $order_id ){
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item ) {
$product_ids = array($item->get_product_id(), $item->get_variation_id());
$product_id1 = 153; // <== Here define the 'xxx' product id
$product_id2 = 228; // <== Here define the 'yyy' product id
$quantity = $item->get_quantity();
if ( in_array( $product_id1, $product_ids ) ) {
for ( $i = 1; $i <= $quantity; $i++ ) {
// do something
}
}
elseif ( in_array( $product_id2, $product_ids ) ) {
for ( $i = 1; $i <= $quantity; $i++ ) {
// do something else
}
}
}
}
应该可以。
我正在使用 PHP Post 为用户购买的每个产品创建一个具有不同 API 的帐户。
我当前的代码如下所示:
add_action( 'woocommerce_thankyou', 'create_account' );
function create_account( $order_id ){
$order = wc_get_order( $order_id );
$items = $order->get_items();
foreach ( $items as $item_id => $item ) {
$product_id = $item->get_variation_id() ? $item->get_variation_id() : $item->get_product_id();
if ( $product_id === xxx) {
//do something
}
if ( $product_id === yyy) {
//do something else
}
}
现在如果购买了产品 xxx 和 yyy,该函数会正确循环并创建 2 个帐户。
但是我的问题是:
现在它只为 xxx 创建一个帐户,为 yyy 创建一个帐户,无论购买多少。
如果我购买“xxx”5次(数量5)和“yyy”3次(数量3),我想要8 (5 + 3) 待创建的个人帐户。我以为foreach循环会做这个,但它似乎没有考虑订单商品数量。
如何处理订单商品数量并为每个产品单元做些什么?
使用基于订单商品数量的 FOR
循环以这种方式处理基于数量的事件:
add_action( 'woocommerce_thankyou', 'create_account' );
function create_account( $order_id ){
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item ) {
$product_ids = array($item->get_product_id(), $item->get_variation_id());
$product_id1 = 153; // <== Here define the 'xxx' product id
$product_id2 = 228; // <== Here define the 'yyy' product id
$quantity = $item->get_quantity();
if ( in_array( $product_id1, $product_ids ) ) {
for ( $i = 1; $i <= $quantity; $i++ ) {
// do something
}
}
elseif ( in_array( $product_id2, $product_ids ) ) {
for ( $i = 1; $i <= $quantity; $i++ ) {
// do something else
}
}
}
}
应该可以。