WooCommerce:用户Meta将自动添加到购物车



我需要在用户注册后自动将产品添加到购物车中(有效),但要确定用户元添加哪种产品(该产品不起作用)。

第一个动作只是在注册后添加产品,并且效果很好:

add_action( 'user_register', 'add_product_to_cart' );
function add_product_to_cart() {
    if ( ! is_admin() ) {
        $product_id = 115;
        $found = false;
        //check if product already in cart
        if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
            foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
                $_product = $values['data'];
                if ( $_product->id == $product_id )
                    $found = true;
            }
            // if product not found, add it
            if ( ! $found )
                WC()->cart->add_to_cart( $product_id );
        } else {
            // if no products in cart, add it
            WC()->cart->add_to_cart( $product_id );
        }
    }
}

现在,我需要根据我获得的用户列表添加特定产品,但这并没有在购物车中添加任何东西。代码的示例:

add_action( 'user_register', 'add_product_to_cart' );
function add_product_to_cart() {
    if ( ! is_admin() ) {
        $group1iid1 = array("1", "2", "3", "4");
        $group1iid2 = array("5", "6", "7", "8");
        if (in_array("2", $group1iid1)) {
            $product_id = 115;
            WC()->cart->add_to_cart( $product_id );
        } elseif (in_array("0", $group1iid2)) {
            $product_id = 219;
            WC()->cart->add_to_cart( $product_id );
        } else {
            $product_id = 231;
            WC()->cart->add_to_cart( $product_id );
        }
    }
}

如果我将代码带到模板文件中,而只是回声,而不是添加产品 - 它可以正常工作,但是当它在function.php>中这样的情况时,什么都不会发生。

我缺少什么?

您的代码中有缺少的东西:

  1. 在您的第一个条件下,您还需要添加 is_user_logged_in() 条件,因为我想此代码仅适用于新的注册用户。

  2. 您需要获得当前用户,他的促销ID值。我想此值是在用户元数据中设置的,因此要使用 get_user_meta() 函数获得此促销ID值,您必须定义正确的 meta_key

  3. 在您的代码中,您必须在条件下替换 '2' '0' 由当前用户促销ID
    (也 elseif (in_array("0", $group1iid2)) { 条件将始终 false 作为 "0" 值, $group1iid2

,由于我无法测试所有这些,因此基于您的代码(无保证)

 add_action( 'user_register', 'add_product_to_cart' );
function add_product_to_cart( $user_id ) {
    if ( ! is_admin() && $user_id > 0 ) {
        
        // DEFINE BELOW THE META KEY TO GET THE VALUE FOR YOUR GROUP OF CURRENT USER
        $meta_key = 'your_group_meta_key';
        
        // Getting the current user group ID
        $user_promo_id = get_user_meta( $user_id, $meta_key, true );
        $group1_id1 = array('1', '2', '3', '4');
        $group1_id2 = array('5', '6', '7', '8');
        
        if (in_array( $user_promo_id, $group1_id1 ) ) {
            $product_id = 115;
        } elseif (in_array( $user_promo_id, $group1_id2 ) ) {
            $product_id = 219;
        } else {
            $product_id = 231;
        } 
        WC()->cart->add_to_cart( $product_id );
    }
}

最新更新