I have set the price suffix for all my products in Woocommerce (“per box” in my case). This works for variable products as well as for single products without problems.
Now I want this prefix to change to “per pallet” for some product variations of a product. I've read a lot and tried a lot, but I haven't found a solution yet that could be applied to individual variants of a product. Can anyone help me?
Below is the Code I tried. There are no error messages, but it does not change the price of a specific id.
add_filter('woocommerce_available_variation', 'variation_price_custom_suffix', 10, 3 );
function variation_price_custom_suffix( $variation_data, $product, $variation ) {
$args = array(
'post_parent' => get_the_ID() // get parent post-ID
);
$variations = get_posts( $args );
foreach ( $variations as $variation ) {
// get variation ID
$variation_ID = $variation->ID;
// get variation price
$variation_price = $product_variation->get_price_html();
get_post_meta( $variation_ID , '_text_field_date_expire', true );
}
if($variation_ID == 732) {
$variation_data['price_html'] .= "Text after price";
}
return $variation_data;
}
Many thanks in advance and many greetings keved
You are making it much more complicated that it should be and there are some mistakes:
$product
function argument (variable). get_post_meta( $variation_ID , '_text_field_date_expire', true );
$variation
variable is the array of the current variation data ( see here ) $variation['variation_id']
is the product variation ID $product->get_id()
So 2 posible ways:
1) Targeting all the product variations of a specific variable product:
add_filter('woocommerce_available_variation', 'variation_price_custom_suffix', 10, 3 );
function variation_price_custom_suffix( $variation_data, $product, $variation ) {
// For a specific variable product ID (and all its variations)
if( $product->get_id() == 732 ) {
$date_expire = get_post_meta( $product->get_id(), '_text_field_date_expire', true );
$variation_data['price_html'] .= ' ' . __("Text after price");
}
return $variation_data;
}
2) Targeting a unique product variations ID:
add_filter('woocommerce_available_variation', 'variation_price_custom_suffix', 10, 3 );
function variation_price_custom_suffix( $variation_data, $product, $variation ) {
// For a specific product variation ID
if( $variation['variation_id'] == 732 ) {
$date_expire = get_post_meta( $variation['variation_id'], '_text_field_date_expire', true );
$variation_data['price_html'] .= ' ' . __("Text after price");
}
return $variation_data;
}
Code goes in function.php file of your active child theme (or active theme). It should better work now, but you will need to complete it to use your custom field .
Related: Adding custom text to the variation price in Woocommerce
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.