基于 WooCommerce 中的产品的自定义产品价格后缀

Custom product price suffix based on product in WooCommerce

我需要帮助才能显示每个产品的不同价格后缀。目前我找到了根据类别显示价格后缀的代码,但它并没有解决问题,因为我需要它对相同类别的某些产品有所不同。

Custom product price suffix for selected product categories in WooCommerce答案代码是基于类别的。是否可以仅针对特定产品进行更改?

以防万一有人想知道如何根据现有代码应用它。

in_array - 检查数组中是否存在值

function filter_woocommerce_get_price_html( $price, $product ) {
    // Set specfic product ID's
    $specific_product_ids = array( 1, 2, 3 );

    // Checks if a value exists in an array
    if ( in_array( $product->get_id(), $specific_product_ids ) ) {
        $price .= ' ' . __( 'per kg', 'woocommerce' );
    }

    return $price;
}
add_filter( 'woocommerce_get_price_html', 'filter_woocommerce_get_price_html', 10, 2 );

要处理多个后缀,您可以使用 PHP: switch

function filter_woocommerce_get_price_html( $price, $product ) {
    // Get product ID
    $product_id = $product->get_id();
    
    // Set product ID's kg
    $product_ids_kg = array( 30, 813, 815 );
    
    // Set product ID's g
    $product_ids_g = array( 817, 819, 821 );
    
    // Checks if a value exists in an array 
    switch ( $product_id ) {
        case in_array( $product_id, $product_ids_kg ):
            $suffix = ' per kg';
            break;
        case in_array( $product_id, $product_ids_g ):
            $suffix = ' per 500g';
            break;
        default:
            $suffix = '';
    }

    // Return
    return $price . __( $suffix, 'woocommerce' );
}
add_filter( 'woocommerce_get_price_html', 'filter_woocommerce_get_price_html', 10, 2 );