WooCommerce预订:在购物车和结帐中添加和重新排序商品数据
问题描述:
我想显示预订的结束日期以及开始日期。现在到目前为止,我有以下几种:WooCommerce预订:在购物车和结帐中添加和重新排序商品数据
add_filter('woocommerce_get_item_data', 'display_booking_date', 10, 2);
function display_booking_date($item_data, $cart_item){
if (! empty($cart_item['booking'])) {
$date_format = apply_filters('woocommerce_bookings_date_format', wc_date_format());
$end_date = apply_filters('woocommerce_bookings_get_end_date_with_time', date_i18n($date_format, $cart_item['booking']['_end_date']));
$item_data[] = array(
'key' => __('End Date', 'your-textdomain'),
'value' => $cart_item['booking']['_end_date'],
'display' => $end_date,
);
}
return $item_data;
}
这使我可以显示预订的结束日期。但是,这是在任何其他元数据之后,这不是我想要的。有没有一种办法,我既可以:
1)凡截止日期出现,使其出现于开始日期,而不是在所有的其他元数据
2的变化),更妙的是将有开始和结束日期一起作为元数据的同一位。
谢谢!
答
码轻轻更新
是的,这是可能的,但你必须知道的项目数据key
为“开始日期” ......在这里,我重新排序的项目的数据。
但不可能将开始日期和结束日期放在一起(因为您只能在数组1键,1值和1显示中)。可能的是将两个值和两个显示合并在一起。
如果需要的话,显示$item_data
说法的原始数据,你可以在结尾使用print_r($item_data);
自己的函数中前return
。
这里是代码:
add_filter('woocommerce_get_item_data', 'display_booking_date', 10, 2);
function display_booking_date($item_data, $cart_item){
if (! empty($cart_item['booking'])) {
// ==> HERE define your real START DATE 'name'
$item_data_start_date_name = __('Start Date', 'your-textdomain'); // or just 'Start Date' …
$date_format = apply_filters('woocommerce_bookings_date_format', wc_date_format());
$end_date = apply_filters('woocommerce_bookings_get_end_date_with_time', date_i18n($date_format, $cart_item['booking']['_end_date']));
$item_data_end_date_array = array(
'key' => __('End Date', 'your-textdomain'),
'value' => $cart_item['booking']['_end_date'],
'display' => $end_date,
);
$new_item_data = array();
$count = 0;
//iteratting throug each item_data values
foreach($item_data as $key => $value){
// If we find the "start date" we set just afer the "end date"
if($value['name'] == $item_data_start_date_name){
$new_item_data[$count] = $value;
$count++;
$new_item_data[$count] = $item_data_end_date_array;
$count++;
} else {
$new_item_data[$count] = $value;
$count++;
}
}
return $new_item_data;
} else {
return $item_data;
}
}
代码放在您的活动子主题(或主题)的function.php文件或也以任何插件文件。
该代码已与其他设置进行测试,并应为您工作。
嗨Loic,谢谢你的帮助。我似乎得到了一个警告,虽然它说以下内容: 警告:在/ home/jonath59/public_html/lashis/wp-content/plugins/woocommerce/includes/class-wc-cart中为foreach()提供了无效参数。 php on line 591 任何想法可能会导致这种情况? – DigM
嗨Loic,你编辑的答案几乎奏效。我似乎没有从我的item_data中返回键,并且它正在发出警告。相反,我似乎越来越['名称'],所以我改变了if语句来说if($ value ['name'] == $ item_data_start_date_key)然后工作。 – DigM
是的。谢谢你的帮助! – DigM