Прежде всего, ваша основная проблема:
Как получить идентификатор (а) бронирования из заказа (Id)?
Поскольку в заказе может быть много заказов (предметов), вы можете получить идентификаторы бронирования, нацеленные на родительский элемент сообщения (который является идентификатором заказа), с помощью очень простого и легкого запроса SQL Используя WordPress WPDB
Класс и доступные методы.
Затем вы сможете получить дату начала из одного бронирования этого заказа и установить ее в качестве настраиваемого заполнителя для темы электронного уведомления:
// Custom function to get the booking Ids from an order Id (with an SQL query)
function wc_get_booking_ids( $order_id ){
global $wpdb;
return $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'wc_booking' AND post_parent = %d", $order_id ) );
}
// For woocommerce versions up to 3.2
add_filter( 'woocommerce_email_format_string' , 'filter_email_format_string', 20, 2 );
function filter_email_format_string( $string, $email ) {
if( ! is_a($email->object, 'WC_Order') ) return; // Exit
$booking_ids = wc_get_booking_ids( $email->object->get_id() );
if( ! empty($booking_ids) ) {
// Get the instance of the WC_Booking object from one booking Id
$booking = new WC_Booking( reset($booking_ids) );
if( is_a($booking, 'WC_Booking') && method_exists($booking, 'get_start_date') ) {
// Additional placeholders array (one by line)
$custom_placeholders = array(
'{start_date}' => $start_date = $booking->get_start_date(),
);
$string = str_replace( array_keys( $custom_placeholders ), array_values( $custom_placeholders ), $string );
}
}
return $string;
}
Код вступает в силу. php файл вашего активная дочерняя тема (или активная тема). Проверено и работает.