Woocommerce:访问页面时自动添加到购物车(可变产品ID)

时间:2017-07-01 01:44:52

标签: php wordpress function woocommerce

我知道已有一个现有功能,您可以在访问网站时在购物车上添加某个产品。问题是你只能使用1个产品,我希望它根据你访问的页面而变化。

这是现有代码(添加在functions.php文件中)

add_action( 'template_redirect', 'add_product_to_cart' );
function add_product_to_cart() {
    if ( ! is_admin() ) {
        $product_id = 275;
        $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 );
        }
    }
}

在名为page-template.php的目标网页中,有一个自定义字段,用于回显所选产品的ID。因此,当我的用户访问此页面时,我希望此ID替换functions.php文件中的$ product_id。我如何实现这一目标?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

可能在函数后加载全局变量。而不是仅仅设置变量启动传递变量的函数并避免钩子:

在functions.php中:

function add_product_to_cart($product_id) {
    if ( ! is_admin() ) {
        $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 );
        }
    }
}

在page-template.php中:

add_product_to_cart(275);