Как добавить префикс к цене товара

Чтобы добавить дополнительный текст рядом с ценой, можно воспользоваться хуками, которые предоставляет плагин woocommerce.

Для начала нужно добавить поле ввода, с помощью которого мы будем сохранять необходимый текст. Добавляем в плагин https://support.wpshop.ru/docs/general/profunctions/ код

add_action( 'woocommerce_product_options_general_product_data', function () {
    global $product_object;
    /** @var WC_Product $product_object */
    woocommerce_wp_text_input( [
        'id'          => 'price_prefix',
        'label'       => __( 'Price Prefix', THEME_TEXTDOMAIN ),
        'desc_tip'    => true,
        'value'       => $product_object->get_meta( 'price_prefix' ),
        'description' => __( 'Prefix will appear before price.', THEME_TEXTDOMAIN ),
    ] );
} );

add_action( 'woocommerce_process_product_meta', function ( $post_id ) {
    $product = wc_get_product( $post_id );
    $prefix  = isset( $_POST['price_prefix'] ) ? $_POST['price_prefix'] : '';
    $product->update_meta_data( 'price_prefix', sanitize_text_field( $prefix ) );
    $product->save();
} );

После этого у нас появится вот такое поле ввода на странице редактирования товара

А чтобы этот текст вставлялся перед ценой, добавляем такой код

add_filter( 'woocommerce_get_price_html', function ( $price, $product ) {
    /** @var WC_Product $product */
    if ( $prefix = $product->get_meta( 'price_prefix' ) ) {
        $prefix = $prefix . ': ';
        if ( '' === $product->get_price() ) {
            $price = apply_filters( 'woocommerce_empty_price_html', '', $product );
        } elseif ( $product->is_on_sale() ) {
            $price = $prefix . wc_format_sale_price(
                    wc_get_price_to_display( $product, [ 'price' => $product->get_regular_price() ] ),
                    wc_get_price_to_display( $product )
                ) . $product->get_price_suffix();
        } else {
            $price = $prefix . wc_price( wc_get_price_to_display( $product ) ) . $product->get_price_suffix();
        }
    }

    return $price;
}, 10, 2 );

В итоге мы получим вот такой результат

Вам помог ответ?
Похожие вопросы
Ваши темы поддерживают английский язык?
+9
Текст без переносов и/или выходит за границы
+4
Нужно ли покупать Clearfy, если у меня Ваша тема?
+3
Поддерживает ли тема английский язык?
+1
Что за ссылка в коде Перейти к контенту?
+1
C формы обратной связи не приходят письма
+1
Не работает встроенный лайтбокс
+1
Как добавить или изменить шрифт в теме
+0
Почему сайт с нашей темой имеет низкие баллы (показатели) PageSpeed?
+0
Вирусы в ваших темах
+0
Можно ли переименовывать папку с темой
+0
Как вносить изменения в шаблон?
+0
Как закрыть от индексации страницы пагинации?
+0
Какой хостинг подходит для хороших результатов в PageSpeed?
+0
Как убрать поле "Email" из формы комментирования?
+92
Почему в Гугл.Вебмастере выдается ошибка "Страница не оптимизирована для мобильных устройств"?
+8
Что будет, если Ваш сервер лицензий/Ваш сайт закроется? Перестанут ли работать темы?
+8
Как убрать поле "Сайт" из формы комментирования?
+7
Что означает ошибка publisher в микроразметке?
+6
Как изменить количество записей на главной и в рубриках блога
+5