Избегайте краткого описания, дополнительный текст появляется в описании вариантов продукта Woocommerce.

Я хочу, чтобы после описания всех моих продуктов отображалось сообщение, которое подходит для большинства моих продуктов. Однако проблема в том, что для переменных продуктов сообщение будет отображаться как в общем описании продукта, так и при выборе варианта.

Поэтому мне не нужен дополнительный текст при выборе варианта, поэтому я изменил свою функцию, добавив оператор else if. Теперь функция выглядит следующим образом:

add_filter('woocommerce_short_description','ts_add_text_short_descr');
function ts_add_text_short_descr($description){
    global $post;
    global $product;
    

    // Don't want the message if the product is in these specific categories
    if ( has_term( "training-courses-v2", "product_cat", $post->ID )  ||  has_term( "online-training-courses", "product_cat", $post->ID ) ) {
         return $description;
   }
    else if ( $product->is_type( 'variation' ) ) {
        return $description;
    }
    else {
         $text="<strong>Please note that as this is a hygiene product, only unopened products in their original, unopened condition and in their original packaging are eligible for a refund.</strong>";
    return $description.$text;
   }    
}

Однако это по-прежнему не работает, и текст появляется в обоих местах. Я попытался также изменить тип продукта на переменный, но сообщение не появляется ни в одном месте.

Есть ли способ получить его, чтобы сообщение не добавлялось, когда продукт является вариацией?


person DigM    schedule 17.07.2020    source источник


Ответы (1)


Используйте следующее, чтобы избежать добавления дополнительного текста к описанию каждого варианта изменяемого продукта:

add_filter( 'woocommerce_short_description', 'ts_add_text_short_descr' );
function ts_add_text_short_descr( $description ){
    global $post, $product;

    $product_id = is_a($product, 'WC_Product') ? $product->get_id() : get_the_id();

    // Don't want the message if the product is in these specific categories
    if ( ! has_term( array("training-courses-v2", "online-training-courses"), "product_cat", $product_id ) ) {
        $description .= "<strong>Please note that as this is a hygiene product, only unopened products in their original, unopened condition and in their original packaging are eligible for a refund.</strong>";
    }
    return $description;
}

add_filter( 'woocommerce_available_variation', 'filter_wc_available_variation_desscription', 10, 3);
function filter_wc_available_variation_desscription( $data, $product, $variation ) {
    if ( ! has_term( array("training-courses-v2", "online-training-courses"), "product_cat", $product->get_id() ) ) {
        $data['variation_description'] = get_post_meta($variation->get_id(), '_variation_description', true);
    }

    return $data;
}

Код находится в файле functions.php вашей активной дочерней темы (или активной темы). Проверено и работает.

person LoicTheAztec    schedule 17.07.2020