我知道已有一个现有功能,您可以在访问网站时在购物车上添加某个产品。问题是你只能使用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。我如何实现这一目标?
非常感谢您的帮助。
答案 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);