Добавление постфикса к варианту продукта WooCommerce перезаписывается - PullRequest
4 голосов
/ 13 марта 2019

Я начинаю ожидать, что в WooCommerce встроена какая-то «функция обновления», которая позволяет мне переименовывать только вариации post_title. И затем он возвращается к тому, что решили крючки / WooCommerce?

Я хочу добавить постфиксы типа "(Отменено)" к конкретным вариантам программно.

$new_title = get_the_title( $variationid ) . ' (Cancelled)';
wp_update_post(array('ID' =>$variationid, 'post_title' => $new_title));

Это только "висит" на некоторое время ...

Я попытался отключить этот хук, а затем изменить заголовок, но он все равно перезаписывается.

add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' );

Есть ли способ заставить WooCommerce прекратить переписывать названия вариаций?

Мое решение основано на ответе @LoicTheAztec и использует логику, основанную на моем статусе поста "отменено".

add_filter( 'woocommerce_product_variation_title', 'filter_product_variation_title_callback', 10, 4 );
function filter_product_variation_title_callback( $variation_title, $product, $title_base, $title_suffix ) {

    $id = $product->get_id();
    $status = get_post_status($id);
    if ($status == 'cancelled'){
        return $variation_title . ' (' . __("Cancelled", "woocommerce") . ')';
    } else {
        return $variation_title;
    }
}

Ответы [ 2 ]

3 голосов
/ 13 марта 2019

Вы должны попробовать использовать выделенный woocommerce_product_variation_title фильтр-хук, который позволяет временно изменить название варианта продукта (условно) , таким образом:

add_filter( 'woocommerce_product_variation_title', 'filter_product_variation_title_callback', 10, 4 );
function filter_product_variation_title_callback( $variation_title, $product, $title_base, $title_suffix ) {
    // Conditional custom field (example)
    if( $product->get_meta('_is_cancelled')  )
        $title_base .= ' (' . __("cancelled", "woocommerce") . ')';

    return $title_base
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Должно работать.

Примечание: $variation_title возвращает название продукта, включая атрибуты продукта, которое отключено в приведенном выше коде функции ...


На страницах редактирования заказа (тоже отражено) :

enter image description here

0 голосов
/ 13 марта 2019

Раздел кода в WooCommerce и их фильтры.

        $should_include_attributes = apply_filters( 'woocommerce_product_variation_title_include_attributes', $should_include_attributes, $product );
        $separator                 = apply_filters( 'woocommerce_product_variation_title_attributes_separator', ' - ', $product );
        $title_base                = get_post_field( 'post_title', $product->get_parent_id() );
        $title_suffix              = $should_include_attributes ? wc_get_formatted_variation( $product, true, false ) : '';

        return apply_filters( 'woocommerce_product_variation_title', $title_suffix ? $title_base . $separator . $title_suffix : $title_base, $product, $title_base, $title_suffix );




add_filter('woocommerce_product_variation_title', 'change_variation_title_temporary');

function change_variation_title_temporary($variation_title, $product, $title_base, $title_suffix) {

    return $title_base .  ' (Cancelled)';

} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...