Php 若要添加到购物车,请从自定义选择字段添加第二个产品
我需要什么 我想在不使用重量级插件的情况下实现一个简单的产品附加组件,而这些插件对于我的需求来说是多余的。此外,我希望能够保持跟踪的附加组件库存,这是没有任何插件提供。为了让事情更清楚一点,我可以说,主要产品是一个吊坠和附加是一个链。客户应该能够在pendant的页面上选择链,当他或她单击“添加到购物车”按钮时,两个项目都应该添加到购物车 所以我想我可以使用隐藏的单一产品作为附加组件。我们的想法是在我的附加产品中添加一个下拉列表,通过POST获得所选的价值,并将其与主产品一起添加到购物车中。到目前为止还不错 我所做的 这是我的密码:Php 若要添加到购物车,请从自定义选择字段添加第二个产品,php,wordpress,woocommerce,product,cart,Php,Wordpress,Woocommerce,Product,Cart,我需要什么 我想在不使用重量级插件的情况下实现一个简单的产品附加组件,而这些插件对于我的需求来说是多余的。此外,我希望能够保持跟踪的附加组件库存,这是没有任何插件提供。为了让事情更清楚一点,我可以说,主要产品是一个吊坠和附加是一个链。客户应该能够在pendant的页面上选择链,当他或她单击“添加到购物车”按钮时,两个项目都应该添加到购物车 所以我想我可以使用隐藏的单一产品作为附加组件。我们的想法是在我的附加产品中添加一个下拉列表,通过POST获得所选的价值,并将其与主产品一起添加到购物车中。到目
add_操作('woocommerce_之前的'add_to_cart_按钮','chain_selection_字段');
功能链\选择\字段(){
全球$产品;
$domain='woocommerce';
$args=数组(
“sku”=>“一些文本”,
“库存状态”=>“库存”,
);
$products=wc_获取_产品($args);
foreach($products as$product){
$product_id=$product->get_id();
$options[$product\u id]=$product->get\u name();
}
woocommerce\u form\u字段('chain\u type',数组(
'类型'=>'选择',
“label'=>”(链类型选择“,$domain),
“必需”=>true,
“选项”=>$options,
),'');
}
添加操作(“商业添加到购物车”、“产品选项添加到购物车”);
功能产品选项添加到购物车(){
$product\U id=$\U POST['chain\U type'];
$found=false;
如果(sizeof(WC()->cart->get_cart())>0){
foreach(WC()->cart->get_cart()作为$cart\u item\u key=>$value){
$_product=$values['data'];
如果($\u产品->id==$product\u id)
$found=true;
}
如果(!$found)
WC()->购物车->将购物车添加到购物车($product\U id);
}否则{
WC()->购物车->将购物车添加到购物车($product\U id);
}
}
“添加到购物车”的实现从这里开始-
有什么问题吗?
其实有很多问题:
$\u POST=array()代码>或unset($\u POST)代码>在“添加到购物车”功能的末尾,但这不起作用
问题是我在foreach循环中使用了全局变量
$product
。因此,它打破了循环逻辑,使用全局$product
而不是所需的数组值。因此,要使代码正常工作,只需将foreach循环代码更改为如下内容:
foreach($products作为$single_产品){
$product_id=$single_product->get_id();
$options[$product\u id]=$single\u product->get\u name();
否则,代码运行良好,尽管我必须说几句话:
- 只有通过按“添加到购物车”按钮提交的
内调用的钩子插入代码时,代码才会起作用,即..
,添加到购物车之前的woocommerce\u按钮
和添加到购物车数量之后的添加到购物车数量之前的woocommerce\u
(您可以在模板中自己检查)对于简单产品和一些称为内部变量回路vor变量产品的挂钩,可在此处找到-woocommerce\u
- 当在“添加到购物车”按钮之前通过
输入字段被放置在产品库存文本和“添加到购物车”按钮之间,这不是最佳位置,看起来您要么必须编辑模板文件,要么使用JS来实现当前WC(4.1)挂钩的更好放置woocommerce\u插入时,
函数相当慢。在我的测试中,它比通过wc\u get\u products()
$wpdb->get\u results进行的类似查询慢10倍
- 最好将
自定义函数代码插入product\u option\u add\u to\u cart()
,以防止由于某种原因没有$\u POST值时出现PHP通知if(isset($\u POST['chain\u type')){…}
- 最好将
$product
。因此它打破了循环逻辑,使用了全局$product
而不是所需的数组值。因此,使代码工作所需的全部工作就是将foreach循环代码更改为类似以下内容:
foreach($products作为$single_产品){
$product_id=$single_product->get_id();
$options[$product\u id]=$single\u product->get\u name();
否则,代码运行良好,尽管我必须说几句话:
- 只有通过按“添加到购物车”按钮提交的
内调用的钩子插入代码时,代码才会起作用,即..
,添加到购物车之前的woocommerce\u按钮
和添加到购物车数量之后的添加到购物车数量之前的woocommerce\u
(您可以在模板中自己检查)对于简单产品和一些称为内部变量回路vor变量产品的挂钩,可在此处找到-woocommerce\u
- 当在“添加到购物车”按钮之前通过
输入字段被放置在产品库存文本和“添加到购物车”按钮之间,这不是最佳位置,看起来您要么必须编辑模板文件,要么使用JS来实现当前WC(4.1)挂钩的更好放置woocommerce\u插入时,
函数相当慢。在我的测试中,它比类似的查询慢10倍wc\u get\u products()