根据产品标签和产品变体更改 WooCommerce 库存数量文本

问题描述 投票:0回答:1

我正在寻找如何基于标签的 woocommerce 自定义库存数量 tekst,即使用以下参数处理可变产品、延期交货和库存管理:

如果产品有特定的产品标签,我想将“instock”文本更改为“Stock:”。 $股票。 ' 件。 2-3 天发货”,“缺货”文本为“无库存,交货时间 20 至 25 个工作日。”

这应该适用于单一产品,以及同时启用延期交货和库存管理的可变产品。我在某些产品上有超过 230 个变量。如产品所示:****

我尝试过以下测试,它适用于单个产品。 然而,在变化级别上,具有 1 个随机标签的产品和 1101、1104 标签的行会显示。

add_filter( 'woocommerce_get_availability_text', 'woo_cust_stock_quantity_text', 99, 2 );

function woo_cust_stock_quantity_text( $availability, $product ) {
    $stock = $product->get_stock_quantity();


    if ( has_term( 1100 , 'product_tag' ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 20 t/m 25 werkdagen voor chroom, 40 t/m 60 werkdagen voor kleur.';
    }
    if ( has_term( 1101 , 'product_tag' ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 20 t/m 25 werkdagen voor chroom, 40 t/m 60 werkdagen voor kleur.';
    }
    if ( has_term( 1102 , 'product_tag' ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 20 t/m 25 werkdagen voor chroom, 40 t/m 60 werkdagen voor Mat-zwart.';
    }
    if ( has_term( 1103 , 'product_tag' ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 1 t/m 5 werkdagen.';
    }
    if ( has_term( 1104 , 'product_tag' ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 4 t/m 7 werkdagen.';
    }
    if ( has_term( 1105 , 'product_tag' ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 7 t/m 14 werkdagen.';
    }
    if ( has_term( 1106 , 'product_tag' ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 3 tot 5 weken.';
    }
    if ( has_term( 1107 , 'product_tag' ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 8 tot 12 weken.';
    }
    return $availability;
}

我已经尝试了很多,但我对 PHP 的了解还不是太深,无法弄清楚。 有人可以帮我吗?

wordpress woocommerce stock custom-taxonomy product-variations
1个回答
1
投票

在 WooCommerce 中,产品类别或产品标签等自定义分类法不是由产品变体管理,而是由其父级可变产品管理。然后我重新审视了您的代码,使其也适用于产品变体:

add_filter( 'woocommerce_get_availability_text', 'woo_cust_stock_quantity_text', 99, 2 );
function woo_cust_stock_quantity_text( $availability, $product ) {
    $stock      = $product->get_stock_quantity();

    // Getting the parent product Id for product variations
    $product_id = ( $product->get_type() == 'variation' ) ? $product->get_parent_id() : $product->get_id();

    if ( has_term( 1100 , 'product_tag', $product_id ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 20 t/m 25 werkdagen voor chroom, 40 t/m 60 werkdagen voor kleur.';
    }
    if ( has_term( 1101 , 'product_tag', $product_id ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 20 t/m 25 werkdagen voor chroom, 40 t/m 60 werkdagen voor kleur.';
    }
    if ( has_term( 1102 , 'product_tag', $product_id ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 20 t/m 25 werkdagen voor chroom, 40 t/m 60 werkdagen voor Mat-zwart.';
    }
    if ( has_term( 1103 , 'product_tag', $product_id ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 1 t/m 5 werkdagen.';
    }
    if ( has_term( 1104 , 'product_tag', $product_id ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 4 t/m 7 werkdagen.';
    }
    if ( has_term( 1105 , 'product_tag', $product_id ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 7 t/m 14 werkdagen.';
    }
    if ( has_term( 1106 , 'product_tag', $product_id ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 3 tot 5 weken.';
    }
    if ( has_term( 1107 , 'product_tag', $product_id ) ) {
       if ( $product->is_in_stock() && $product->managing_stock() ) $availability = 'Voorraad: ' . $stock. ' stuks. Verwachte levertijd 8 tot 12 weken.';
    }
    return $availability;
}  

代码位于活动子主题(或活动主题)的functions.php 文件中。应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.