我经营一家WooCommerce商店,有三种包装;单独出售,批量出售6件,批量出售12件。这些包装由一种称为标准的分类法标记,术语为6-pack和12-pack。
下面是我在函数中使用的代码。php,批量产品的数量步骤增加6或12。到目前为止,一切都按计划进行。
问题:当转到购物车页面时,数量步骤不起作用。这意味着任何产品的步骤突然变为1,这意味着客户可以将12改为13,而不是24,以此类推。
关于如何在购物车页面上保留数量步骤,有什么想法吗?
add_filter( \'woocommerce_quantity_input_args\', \'input_set_all_values\', 1, 2 );
function input_set_all_values( $args, $product ) {
if (( has_term(\'6-pack\', \'criteria\' ) ) ) {
$args[\'step\'] = 6;
$args[\'min_value\'] = 6;
return $args;
}
if (( has_term(\'12-pack\', \'criteria\' ) ) ) {
$args[\'step\'] = 12;
$args[\'min_value\'] = 12;
return $args;
}
else {
$args[\'step\'] = 1;
$args[\'min_value\'] = 1;
return $args;
}
}
最合适的回答,由SO网友:Sumit 整理而成
问题出现在购物车页面has_term
是false
因为它正在检查购物车页面是否有条款12-pack
或6-pack
. 您还需要向提供post对象/IDhas_term()
作为第三个参数。
更新的代码:-
function input_set_all_values( $args, $product ) {
if (( has_term(\'6-pack\', \'criteria\', $product->post ) ) ) {
$args[\'step\'] = 6;
$args[\'min_value\'] = 6;
return $args;
} else if (( has_term(\'12-pack\', \'criteria\', $product->post ) ) ) {
$args[\'step\'] = 12;
$args[\'min_value\'] = 12;
return $args;
} else {
$args[\'step\'] = 1;
$args[\'min_value\'] = 1;
return $args;
}
}