加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – WooCommerce自定义Variation Dropdown

发布时间:2020-12-13 16:09:38 所属栏目:PHP教程 来源:网络整理
导读:是否有可能定制woocommerce变化下拉菜单,如果我们有2种颜色和大小的变化,一种颜色“大”的缺货,是否可以添加“缺货”与每个变化下拉菜单. 解决方法 在你的theme / functions.php中试试这个 add_filter( 'woocommerce_variation_option_name','customizing_va
是否有可能定制woocommerce变化下拉菜单,如果我们有2种颜色和大小的变化,一种颜色“大”的缺货,是否可以添加“缺货”与每个变化下拉菜单.

解决方法

在你的theme / functions.php中试试这个

add_filter( 'woocommerce_variation_option_name','customizing_variations_terms_name',10,1 );
function customizing_variations_terms_name( $term_name ){

if(is_admin())
    return $term_name;

global $product;
$second_loop_stoped = false;

// Get available product variations
$product_variations = $product->get_available_variations();

// Iterating through each available product variation
foreach($product_variations as $variation){

    $variation_id = $variation['variation_id'];
    $variation_obj = new WC_Product_Variation( $variation_id );

    ## WOOCOMMERCE RETRO COMPATIBILITY ##
    if ( version_compare( WC_VERSION,'3.0','<' ) ) # BEFORE Version 3 (older)
    {
        $stock_status = $variation_obj->stock_status;
        $stock_qty = intval($variation_obj->stock);

        // The attributes WC slug key and slug value for this variation
        $attributes_arr = $variation_obj->get_variation_attributes();
    }
    else # For newest verions: 3.0+ (and Up)
    {
        $stock_status = $variation_obj->get_stock_status();
        $stock_qty = $variation_obj->get_stock_quantity();

        // The attributes taxonomy key and slug value for this variation
        $attributes_arr = $variation_obj->get_attributes();
    }

    if(count($attributes_arr) != 1) // Works only for 1 attribute set in the product
        return $term_name;

    // Get the terms for this attribute
    foreach( $attributes_arr as $attr_key => $term_slug){
        // Get the attribute taxonomy
        $term_key = str_replace('attribute_','',$attr_key );

        // get the corresponding term object
        $term_obj = get_term_by( 'slug',$term_slug,$term_key );
        if( $term_obj->name == $term_name ){ // If the term name matches we stop the loops
            $second_loop_stoped = true;
            break;
        }
    }
    if($second_loop_stoped)
        break;
}
if( $stock_qty>0 )
    return $term_name .= ' - ' . $stock_status . ' ('.$stock_qty.')';
else
    return $term_name .= ' - ' . $stock_status;

}

发表在这里感谢loictheaztec:

Show stock status next to each attribute value in WooCommerce variable products

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读