Показывать сниженную цену при бронировании в Woocommerce

#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 файл вашей активной дочерней темы (или активной темы).