在Woocommerce 3中自动将产品添加到购物车

顾问专家W

我希望任何访问我的Woocommerce商店的人都能在他的购物车中找到免费的产品。我找到了这段代码,它可以正常工作,但是它在日志中显示了许多php错误

您是否知道为什么不干净?

请对此提供任何帮助。

/*
 * AUTOMATICALLY ADD A PRODUCT TO CART ON VISIT
 */
function aaptc_add_product_to_cart() {
    if ( ! is_admin() ) {
        $product_id = 99999;  // Product Id of the free product which will get added to cart
        $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->get_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( 'init', 'aaptc_add_product_to_cart' );

再次答复后进行编辑谢谢,您的代码没有更多错误,但是您可以检查是否可以选择基于SKU“惊喜”的免费产品吗?再次感谢大家。

    function sku2id( $sku = false ) {
    global $wpdb;
    if( !$sku )
        return null;
    $product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );
    if ( $product_id )
        return $product_id;
    return null;
}
add_action( 'template_redirect', 'auto_add_product_to_cart' );
function auto_add_product_to_cart() {
    if ( is_admin() ) return;

    // Product Id of the free product which will get added to cart;
    $product_id = sku2id("Surprise");  // FREE PRODUCT MUST HAVE SKU Surprise

    if ( WC()->cart->is_empty() ) 
    {
        // No products in cart, we add it
        WC()->cart->add_to_cart( $product_id ); 
    } 
    else
    {
        $found  = false;

        //check if product already in cart
        foreach ( WC()->cart->get_cart() as $cart_item ) {
            if ( $cart_item['data']->get_id() == $product_id )
                $found = true;
        }

        // if the product is not in cart, we add it
        if ( ! $found )
            WC()->cart->add_to_cart( $product_id ); 
    }
}
LoicTheAztec

请尝试使用template_redirect操作钩子重新尝试以下类似代码:

add_action( 'template_redirect', 'auto_add_product_to_cart' );
function auto_add_product_to_cart() {
    if ( is_admin() ) return;

    // Product Id of the free product which will get added to cart;
    $product_id = 99999;

    if ( WC()->cart->is_empty() ) 
    {
        // No products in cart, we add it
        WC()->cart->add_to_cart( $product_id ); 
    } 
    else
    {
        $found  = false;

        //check if product already in cart
        foreach ( WC()->cart->get_cart() as $cart_item ) {
            if ( $cart_item['data']->get_id() == $product_id )
                $found = true;
        }

        // if the product is not in cart, we add it
        if ( ! $found )
            WC()->cart->add_to_cart( $product_id ); 
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。

注意:这里的init钩子不正确,因此不能用于…

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据Woocommerce中的其他购物车数量自动将特定产品添加到购物车

在WooCommerce中以编程方式自动将礼品产品添加到购物车?

将产品添加到购物车WooCommerce?

将产品添加到购物车时自动添加包装WooCommerce Multisite

自动将产品添加到购物车WooCommerce时,排除某些类别

Woocommerce-在页面加载时,将产品添加到购物车并自动进行结帐

根据范围条件自动将产品添加到 WooCommerce 购物车

在Woocommerce中访问时自动添加到购物车最新发布的产品

从WooCommerce中的WP管理员将产品添加到客户的购物车

Ajax添加到购物车按钮以实现WooCommerce 3中的产品变化

自定义添加到购物车按钮以将多个产品添加到购物车中,数量为:woocommerce

WooCommerce从购物车中删除所有产品,并将当前产品添加到购物车

添加产品时,WooCommerce将加售产品添加到购物车

在WooCommerce中将产品添加到购物车时自动添加包装

访问产品页面时 Woocommerce 自动添加到购物车

如果产品已经在WooCommerce购物车中,则禁用“添加到购物车”按钮

WooCommerce:当产品已经在购物车中时,更改添加到购物车文本

Woocommerce中产品在购物车中时,更改添加到购物车按钮样式

Woocommerce:如果当前产品在购物车中,则将Body类添加到产品页面

WooCommerce通过共同购物车插件添加到购物车产品

将父产品名称添加到WooCommerce中的每个购物车项目名称中

允许删除Woocommerce中从购物车自动添加的产品

将Woocommerce的“添加到购物车”按钮更改为“查看产品”按钮

在将产品添加到购物车之前,需要Woocommerce复选框

WooCommerce:如何以编程方式将许多产品添加到购物车?

Woocommerce结帐:将产品添加到购物车的复选框

在Woocommerce中显示添加到购物车消息中的产品变体属性

在Woocommerce结帐页面中添加到购物车中的产品的复选框字段

如何从 WooCommerce 中的相关产品中删除添加到购物车按钮?