#php #wordpress #woocommerce #hook-woocommerce #woocommerce-bookings
#php #wordpress #woocommerce #крюк-woocommerce #woocommerce-бронирование
Вопрос:
Я хочу показать цену со скидкой (цену после добавления диапазона) вместе с базовой ценой бронируемого продукта. что я делаю, так это меняю приведенный ниже код в woocommerce-bookingsincludesadminclass-wc-bookings-ajax.php файл
// Build the output
$before = $product->get_price();
$after = wc_price( $display_price ) ;
$discount = $product->get_price() - wc_price( $display_price );
$output = apply_filters( 'woocommerce_bookings_booking_cost_string', __( 'Booking cost', 'woocommerce-bookings' ), $product ) .$discount ': <strong>' .$discount . $price_suffix . '</strong>';
Это правильный путь или вы можете что-нибудь предложить?
Ответ №1:
Перезапись основного кода Woocommerce Bookings — это то, чего вам абсолютно не следует делать по многим разным причинам, которые я не собираюсь объяснять.
Теперь, как вы можете видеть в этом исходном коде, разработчики добавили фильтр, позволяющий вносить изменения в $output
переменную.
Теперь в продуктах, которые можно забронировать в WooCommerce, нет цены со скидкой, как в других продуктах WooCommerce.
Итак, сначала верните исходный файл плагина.
Затем вы можете использовать фильтр следующим образом (куда вы добавите свой собственный код):
add_filter( 'woocommerce_bookings_booking_cost_string', 'change_bookings_booking_cost_string', 10, 2 );
function change_bookings_booking_cost_string( $cost_string, $product ) {
$raw_price = $product->get_price();
$display_price = wc_get_price_to_display($product);
$price_suffix = $product->get_price_suffix();
$formatted_price = wc_price($display_price) . $price_suffix;
$additional_output = 'Here comes your code'; // Replace by your code variables
return $cost_string . ' ' . $additional_output; // Always return (never echo)
}
Код вводится functions.php файл вашей активной дочерней темы (или активной темы).