Как добавить префикс к цене товара
Чтобы добавить дополнительный текст рядом с ценой, можно воспользоваться хуками, которые предоставляет плагин 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 );
В итоге мы получим вот такой результат
Вам помог ответ?