[英]Automatically add products to WooCommerce cart based on range conditions
[英]Creating dropdown with Woocommerce products and automatically add product to cart based on selection
使用Woocommerce 产品简短描述答案代码中同一类别的产品下拉列表,我设法在 WooCommerce 中创建了一个产品下拉列表。
在<select>
标签上,我想调用一个 php function,它根据下拉列表中的选定选项将产品添加到购物车。
我在代码中更改了<select>
标记,如下所示:
<select name="products-select" id="products-select" onchange="'.add_to_cart().'">
Php function 将 woocommerce 产品添加到购物车:
function add_to_cart(){
WC()->cart->add_to_cart( 1147 );
}
由于某种原因,当我加载页面时会调用 function。
要获得可添加到购物车的同一产品类别的相关产品的下拉列表,需要使用 javascript 对代码进行一些更改,例如:
add_shortcode( 'products_dropdown', 'wc_products_from_cat_dropdown' );
function wc_products_from_cat_dropdown( $atts ) {
// Shortcode Attributes
$atts = shortcode_atts( array(
'product_id' => '',
), $atts, 'products_dropdown' );
$product_id = is_product() ? get_the_id() : $atts['product_id'];
if ( empty($product_id) )
return;
ob_start();
$query = new WP_Query( array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => '-1',
'post__not_in' => array( $product_id ),
'tax_query' => array( array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => wp_get_post_terms( $product_id, 'product_cat', array( 'fields' => 'ids' ) ),
),
array(
'taxonomy' => 'product_type',
'field' => 'name',
'terms' => 'simple',
) ),
) );
if ( $query->have_posts() ) :
echo '<div class="products-dropdown"><select name="products-select" id="products-select">
<option value="">'.__('Choose a related product').'</option>';
while ( $query->have_posts() ) : $query->the_post();
$type = wp_get_post_terms( get_the_ID(), 'product_type', ['fields','slug'] );
print_pr($type);
echo '<option value="?add-to-cart='.get_the_ID().'">'.get_the_title().'</option>';
endwhile;
echo '</select><br><a class="button disabled" href="">'.__("add to cart").'</a></div>';
wp_reset_postdata();
endif;
?>
<script type='text/javascript'>
jQuery(function($){
var a = '.products-dropdown', b = a+' .button', d = 'disabled', s = a+' select';
$(document.body).on('change', s, function(){
var qv = $(this).val();
$(b).attr('href', qv);
if ( qv != '' ) {
$(b).removeClass(d).attr('href', $(this).val());
} else if ( qv == '' && ! $(b).hasClass(d) ) {
$(b).addClass(d);
}
}).on('click', b, function(e){
if ( $(b).attr('href') == '' ) {
e.preventDefault();
}
});
});
</script>
<?php
return ob_get_clean();
}
代码进入活动子主题(或活动主题)的functions.php文件。 测试和工作。
该代码将显示带有添加到购物车按钮的简单产品(来自相同产品类别)的下拉列表。
用法
1)。 对于单个产品页面:只需在产品简短描述(或描述)中粘贴以下短代码:
[products_dropdown]
2)。 对于单个产品页面,在 php 代码内:
echo do_shortcode("[products_dropdown]");
3)。 在文本编辑器中的任何帖子或页面上,定义 product_id 参数(在定义的产品 id 下方为37
) :
[products_dropdown product_id="37"]
在选择产品之前,添加到购物车按钮被禁用:
在下拉列表中选择产品时,将激活添加到购物车按钮,并且可以将所选产品添加到购物车:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.