提问人:Rip 提问时间:7/18/2023 更新时间:7/21/2023 访问量:64
隐藏 WooCommerce 产品页面下拉列表中的变体
hide variations from WooCommerce product page dropdown
问:
如何从可变产品的 WooCommerce 产品页面下拉列表中隐藏特定变体?
我的目标是只使股票> 0 可见的最低价格变化。
我试过:
$variations[$h]->set_catalog_visibility('hidden');
$variations[$h]->variation_is_visible(0);
$variations[$h]->update_meta_data( 'variation_is_visible', 0 );
当我插入:
print_r($available_variations);
在变量.php文件中,每个变体的 variation_is_visible 属性为 1:
[variation_is_visible] => 1
我无法找到有关设置 variation_is_visible 属性的任何文档。
谢谢!
答:
0赞
Rip
7/21/2023
#1
woocommerce_variation_is_visible过滤器钩子和woocommerce_variation_set_stock动作钩子的组合正在从产品页面中隐藏除最低价格变化之外的所有价格变化:
add_filter( 'woocommerce_variation_is_visible', 'rip_out_of_stock_variations_not_visible', 10, 4 );
add_action( 'woocommerce_variation_set_stock', 'rip_variation_shared_stock' );
function rip_variations_low_price_visible($product){
$variations = $product->get_available_variations('objects');
usort($variations, function($a, $b)
{
return ($a->get_price() < $b->get_price()) ? -1 : 1;
});
$hlen = count($variations);
$ind = 0;
for ($h=0; $h<$hlen; $h++) {
if ($ind == 0 && $variations[$h]->get_stock_quantity()>0) {
$ind = 1;
$variations[$h]->update_meta_data( 'hide_variation', 0 );
$variations[$h]->save();
}
else {
$variations[$h]->update_meta_data( 'hide_variation', 1 );
$variations[$h]->save();
}
}
}
function rip_out_of_stock_variations_not_visible( $is_visible, $variation_id, $parent_id, $variation ) {
return $variation->get_meta('hide_variation') == 1 ? false : true;
}
function rip_variation_shared_stock( $updated_variation ) {
$product = wc_get_product( $updated_variation->get_parent_id() );
rip_variations_low_price_visible($product);
}
评论
$variations[$h]->save();