我需要在用户注册(有效)之后自动将产品添加到购物车,但是要决定用户元添加哪个产品(这不起作用)。
第一个动作只是在注册后添加产品并且运行良好:
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 );
}
}
}
现在我需要根据我拥有的用户promoID列表添加特定产品,但它不会向购物车添加任何内容。 代码示例:
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>中时就是这样。什么都没发生。
我错过了什么?
答案 0 :(得分:1)
您的代码中缺少一些内容:
1)在您的第一个条件中,您还需要添加is_user_logged_in()
条件,因为我认为此代码仅适用于新注册的用户。
2)你需要获得当前用户,HIS促销ID值。我想这个值是在用户元数据中设置的,因此要使用get_user_meta()
函数获取此促销ID值,您必须定义正确的 meta_key
。
3)在您的代码中,您必须使用当前用户促销ID替换您的条件 '2'
和 '0'
值 ... ( elseif (in_array("0", $group1iid2)) {
条件总是 false "0"
< / strong>价值不存在于 $group1iid2
)
由于我无法测试所有这些,所以根据你的代码(没有任何担保),这是一些工作:
add_action( 'user_register', 'add_product_to_cart' );
function add_product_to_cart() {
if ( ! is_admin() && is_user_logged_in() ) {
// Get current user ID
$user_id = get_current_user_id();
// DEFINE BELOW THE META KEY TO GET THE VALUE FOR YOUR GROUP OF CURRENT USER
$user_promo_id_meta_key = 'set_here_your_group_meta_key';
// Getting the current user group ID
$user_promo_id = get_user_meta($user_id, $user_promo_id_meta_key, true);
$group1iid1 = array('1', '2', '3', '4');
$group1iid2 = array('5', '6', '7', '8');
if (in_array( $user_promo_id, $group1iid1 ) )
$product_id = 115;
elseif (in_array( $user_promo_id, $group1iid2 ) )
$product_id = 219;
else
$product_id = 231;
WC()->cart->add_to_cart( $product_id );
}
}