我有一个小的HTML产品选择器,通过网址中的帖子数据传递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);
}
?>
答案 0 :(得分:0)
好的,我拼凑了一个适合我的解决方案。它可能不是最好的,所以我仍然有兴趣看看别人能想出什么。但是发布这个以防万一它可以帮助任何人。
在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);
答案 1 :(得分:0)
这就是为我解决的问题。
我把这个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;
}
});
?>
答案 2 :(得分:-1)
我正在寻找将执行相同操作的代码-允许我使用SKU将多个产品添加到购物车中-因此用户可以将SKU输入文本字段(假设有3个文本输入,他们可以在提交时在每个商品中添加一个SKU,然后将这些商品添加到购物车中。...这是您的吗?您愿意提供完整的代码吗?谢谢你!