Добавьте настраиваемый текст в информацию о доступности продукта Woocommerce и отобразите его для товаров в корзине.

Я пытаюсь найти способ разместить пользовательский текст перед информацией о наличии (нет в наличии, в наличии и т. Д.) На странице одного продукта woocommerce.

Я использую что-то вроде этого:

add_filter( 'woocommerce_get_availability', 'change_product_availability_display' ); 
add_filter( 'unknown filter', 'change_product_availability_display' );
function change_product_availability_display( $availability ) {
    // Additional text 
    $text = __('Availability:'); 
    // returning the text before the availability 
    return $text . ' ' . $availability; 
}

Это основано на: Добавьте настраиваемый текст перед отображением цены в WooCommerce.

В случае ценового фильтра, названного в моем коде, "неизвестный фильтр" был woocommerce_cart_item_price. Я искал такой фильтр для наличия / наличия товара, но не могу его найти.

Может быть, кто-нибудь может просмотреть этот код и помочь мне найти этот "unknown_filter" или придумать, как я могу поставить собственный текст перед информацией о доступности?


person Fidel2006    schedule 14.02.2018    source источник


Ответы (1)


Я пересмотрел ваш код, поскольку вы пытаетесь объединить строку с массивом.
Также я добавил вторую подключенную функцию, которая позволит отображать вашу «помеченную» доступность для товаров в корзине и на кассе.

Код:

add_filter( 'woocommerce_get_availability', 'add_label_to_availability_display' );
function add_label_to_availability_display( $availability ) {
    if( is_product() || is_cart() || is_checkout() ){
        $label = __( 'Availability', 'woocommerce' ) . ': ';
        $availability['availability'] = $label . $availability['availability'];
    }
    return $availability;
}

add_filter( 'woocommerce_cart_item_name', 'add_availability_below_cart_item_name', 10, 3);
function add_availability_below_cart_item_name( $item_name, $cart_item, $cart_item_key ) {
    $availability = $cart_item['data']->get_availability();
    return $item_name . '<br>' . $availability['availability'];
}

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

Проверено и работает.

person LoicTheAztec    schedule 15.02.2018
comment
Спасибо LoicTheAztec. Ваш код действительно решил мою проблему. Можете ли вы порекомендовать какое-нибудь хорошее руководство по функциям / фильтрам woo, потому что в официальной документации woo вы можете найти все, но это довольно сложно понять без контекста? ;) Еще раз большое спасибо! - person Fidel2006; 15.02.2018
comment
@ Fidel2006 Способ - сначала поиск в google и на StackOverflow, а затем в официальных документах woocommerce… Протестируйте все… используйте print_r () везде. Зайдите в базу данных, чтобы увидеть, как данные сохраняются. Полюбопытствовать. Когда вы не привыкли к woocommerce, это сложно ... Вам понадобится время, чтобы понять и получить навыки роста. Секретов нет: время и энергия… - person LoicTheAztec; 15.02.2018