将多个产品添加到 Woocommerce 购物篮脚本
Posted
技术标签:
【中文标题】将多个产品添加到 Woocommerce 购物篮脚本【英文标题】:Adding multiple products to Woocommerce basket script 【发布时间】:2016-05-05 18:27:46 【问题描述】:我有一个小的 html 产品选择器,它通过 URL 中的发布数据传递 Woocommerce sku。我想使用这些 sku 将匹配的产品添加到 woocommerce 购物车。
我已经编写了一个 php 脚本,它位于我的 Wordpress 主题目录中,我认为它几乎就在那里,但对于为什么我收到“500 服务器错误”有一点帮助。如果我删除 add_to_cart 函数并回显出 sku 而不是这样,那么我看到问题就在那里。我的想法是因为我在循环之外使用了 add_to_cart 函数?但我不确定。以下是我到目前为止所拥有的,如果有人可以提供帮助,将不胜感激。
<?php
//get skus
$design_sample_ids = $_GET["samples"];
//put skus in array
$design_sample_id = explode(";", $design_sample_ids);
//loop through skus
foreach ($design_sample_id as $sample_id)
//add each sku to cart
WC()->cart->add_to_cart($sample_id);
?>
【问题讨论】:
【参考方案1】:好的,我已经拼凑出一个适合我的解决方案。但是它可能不是最好的,所以我仍然有兴趣看看其他人能想出什么。但是在这里发布它以防它对任何人有帮助。
在functions.php文件中..
function add_multiple_sku($design_space_sample_skus)
global $woocommerce;
//put the skus in an array
$design_space_sample_sku = explode(";", $design_space_sample_skus);
//loop through array of skus
foreach ($design_space_sample_sku as $sample_sku)
//convert skus to product ids
$sample_id = wc_get_product_id_by_sku( $sample_sku );
//add each product id to the cart
WC()->cart->add_to_cart( $sample_id );
//redirect to the cart
$cart_url = $woocommerce->cart->get_cart_url();
wp_safe_redirect( $cart_url );
然后函数需要在某个地方调用并且 SKU 的拉入。我在我的主题目录中创建了一个文件并使用了以下内容。 SKU 使用发布数据发布到此文件。同样,可能不是最好的解决方案。
$parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );
//add multiple skus
$design_space_sample_id = $_GET["samples"];
add_multiple_sku($design_space_sample_id);
【讨论】:
【参考方案2】:这就是为我解决的问题。
我把这个 HTML 放在我的页面中:
<form method="post" action="/">
<input type="hidden" name="E24MT1260" value="23">
<input type="hidden" name="ACFIT60060015" value="14">
<input type="hidden" name="programatic_add_to_cart" value="true">
<input type="submit" value="Add to cart">
</form>
并将其添加到我的functions.php中
<?php
add_action('wp_loaded', function()
global $woocommerce;
if (!empty($_POST) && !empty($_POST['programatic_add_to_cart']))
global $woocommerce;
foreach ($_POST as $sku => $quantity)
$product_id = wc_get_product_id_by_sku($sku);
$woocommerce->cart->add_to_cart($product_id, $quantity);
wp_redirect( '/cart' );
exit;
);
?>
【讨论】:
【参考方案3】:我正在寻找可以做同样事情的代码 -- 允许我使用 SKU 将多个产品添加到购物车 -- 这样用户就可以在文本字段中输入一个 SKU(假设有三个文本输入,他们可以在每个中添加一个 SKU)当他们提交时,它会将这些产品添加到购物车......这是你的吗?你介意提供你的完整代码吗?谢谢你!
【讨论】:
上面的 Marks 代码几乎就是这样做的,只是他在表单中使用了隐藏字段,而您的表单将是标准文本字段。以上是关于将多个产品添加到 Woocommerce 购物篮脚本的主要内容,如果未能解决你的问题,请参考以下文章
php 活动门票加 - 当WooCommerce Ticket添加到购物车时,将其他WooCommerce产品添加到购物车
php 活动门票加 - 当WooCommerce Ticket添加到购物车时,将其他WooCommerce产品添加到购物车