1

我正在将 Woocommerce 和 Woocommerce Bookings 用于别墅预订网站,但我遇到了一个无法解决的小问题。

我想在我的购物车中添加一个“详细信息”字段(购物车详细信息)。该字段将显示预订的持续时间以及每栋别墅的价格/晚。

购物车详情

我的别墅有一些具有特定块成本的资源。

关于持续时间值,我可以使用下面的代码显示它:

<?php

/*display_card_data();*/
$items = WC()->cart->get_cart();

foreach($items as $item) {
$duration = $item['booking']['duration'];
}
// displaying values for test
echo $duration. ' x Night Price' .$price ;

?>

我想知道如何在此字段中显示块成本。

请任何帮助都会有用。

4

1 回答 1

1

这可以使用以下代码完成(但它们可以是 WC Bookings 中的多个单价)

add_filter( 'woocommerce_cart_item_name', 'booking_details_after_name', 30, 3 );
function booking_details_after_name( $product_name, $cart_item, $cart_item_key ) {

    if ( isset( $cart_item['booking']['duration'] ) ){
        // Duration
        $duration   = $cart_item['booking']['duration'];

        // Price cost ( they can be many different )
        $base_cost  = get_post_meta( $cart_item['product_id'], '_wc_booking_cost', true );
        $block_cost = get_post_meta( $cart_item['product_id'], '_wc_booking_block_cost', true );

        // Output
        $product_name .= '<br><span class="booking-details">';
        $product_name .= $duration . __(" x Night Price ", "woocommerce")  . wc_price($base_cost);
        $product_name .= '</span>';
    }

    return $product_name;
}

代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。


具体更新:

add_filter( 'woocommerce_cart_item_name', 'booking_details_after_name', 30, 3 );
function booking_details_after_name( $product_name, $cart_item, $cart_item_key ) {

    if ( isset( $cart_item['booking']['duration'] ) ){
        // Duration
        $duration      = (int) $cart_item['booking']['_duration'];
        $resource_id   = $cart_item['booking']['_resource_id'];
        $start_time    = $cart_item['booking']['_start_date'];
        $end_time      = $cart_item['booking']['_end_date'];
        $loop_time     = (int) $start_time;
        $day           = 86400; // In seconds


        // Price cost ( they can be many different )
        $res_block_cost  = get_post_meta( $cart_item['product_id'], '_resource_block_costs', true );
        $booking_pricing = get_post_meta( $cart_item['product_id'], '_wc_booking_pricing', true );

        foreach ( $res_block_cost as $key => $value ){
            if( $key == $resource_id ){
                $bloc_cost = $value;
                break;
            }
        }

        $cost = array();

        foreach ( $booking_pricing as $key => $value ){
            $from = strtotime($value['from']); 
            $to   = strtotime($value['to']) + 86399;
            for( $i = 0; $i < $duration; $i++ ){
                if( $loop_time >= $from && $loop_time <= $to ){
                    $cost[] = $value['cost'];
                    $loop_time += $day;
                }
            }
        }

        $cost  = array_sum( $cost ) / $duration;

        // Output
        $product_name .= '<br><span class="booking-details">';
        $product_name .= $duration . __(" x Night Price ", "woocommerce") . wc_price($bloc_cost + $cost);
        $product_name .= '</span>';
    }

    return $product_name;
}

代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。

于 2018-04-12T15:28:17.337 回答