wordpress 根据产品SKU将随机字符串添加到WooCommerce订单项

lyr7nygr  于 2023-04-20  发布在  WordPress
关注(0)|答案(1)|浏览(139)

我已经在WooCommerce中设置了可变产品。
每一个变化都有一个独特的SKU。我的使命是检查购物车内的SKU,然后根据SKU,生成一些随机字符串(16个字母数字字符)。

  • 如果购物车中的物品(1)是SKU“ABC”,则针对相应订单生成并存储(X)个唯一字符串。
  • 如果购物车中的物品(2)是SKU“DEF”,则针对相应订单生成并存储(y)个唯一字符串。

我已经看过woocommerce_add_order_item_meta钩子,但我似乎无法访问与此钩子相关的函数中的项目产品数据?
我现在用

add_action( 'woocommerce_add_order_item_meta', 'experiment_add_order_item_meta', 10, 3 );
function experiment_add_order_item_meta( $item_id, $values, $cart_item_key  ) {
    // Get a product custom field value
    $custom_field_value = 'hithere';

    // Update order item meta
    if ( ! empty( $custom_field_value ) ){
        wc_add_order_item_meta( $item_id, 'meta_key1', $custom_field_value, false );
    }
}

但是我在试图从这一点上获取产品SKU时迷失了方向。我不能在函数中看到var_dump()等?

gj3fmq9x

gj3fmq9x1#

说明/使用的功能

所以你得到:

function generate_random_string( $length = 16 ) {
    return substr( str_shuffle( str_repeat( $x = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil( $length / strlen( $x ) ) ) ), 1, $length );
}
 
function action_woocommerce_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
    // The WC_Product instance Object
    $product = $item->get_product();
    
    // Get product SKU
    $product_sku = $product->get_sku();
    
    // Generate random string
    $random_string = generate_random_string();
    
    // Compare
    if ( $product_sku == 'ABC' ) {
        $item->update_meta_data( '_random_string', $random_string );
    } elseif ( $product_sku == 'DEF' ) {
        $item->update_meta_data( '_random_string', $random_string );        
    } elseif ( $product_sku == 'GHI' ) {
        $item->update_meta_data( '_random_string', $random_string );        
    } else {
        $item->update_meta_data( '_random_string', $random_string );
    }   
}
add_action( 'woocommerce_checkout_create_order_line_item', 'action_woocommerce_checkout_create_order_line_item', 10, 4 );

相关问题