【问题标题】:Add random string to WooCommerce order items based on product SKU根据产品 SKU 向 WooCommerce 订单项目添加随机字符串
【发布时间】:2021-08-06 17:36:53
【问题描述】:

我在 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() 看到 $values 等?

【问题讨论】:

    标签: php wordpress woocommerce orders sku


    【解决方案1】:

    说明/使用的功能

    所以你得到:

    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 );
    

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多