get( 'post_type' ) ) {
return;
}
$meta_query = (array) $query->get( 'meta_query' );
$service = self::get_filtered_service();
if ( ! empty( $service ) ) {
$meta_query[] = array(
'key' => '_orderable_service_type',
'value' => $service,
);
}
$query->set( 'meta_query', $meta_query );
}
/**
* Get service type for an order.
*
* @param WC_Order $order
*
* @return bool|string
*/
public static function get_service_type( $order ) {
$shipping_methods = $order->get_shipping_methods();
$type = false;
if ( empty( $shipping_methods ) ) {
return $type;
}
$shipping_method = array_shift( $shipping_methods );
$shipping_method_id = $shipping_method->get_method_id();
return Orderable_Services::is_pickup_method( $shipping_method_id ) ? 'pickup' : 'delivery';
}
/**
* Add columns to admin orders screen.
*
* @param array $columns
*
* @return array
*/
public static function add_admin_order_columns( $columns ) {
$columns['orderable_service_type'] = __( 'Service', 'orderable' );
return $columns;
}
/**
* Add columns content to admin orders screen.
*
* @param $column_name
* @param $post_id
*/
public static function add_admin_order_columns_content( $column_name, $post_id ) {
if ( 'orderable_service_type' === $column_name ) {
$order = wc_get_order( $post_id );
$type = Orderable_Services_Order::get_service_type( $order );
$background = 'pickup' === $type ? '#C6C7E1' : '#c5e2df';
$color = 'pickup' === $type ? '#6264ac' : '#3e7a74';
printf( '%s', esc_attr( $type ), esc_attr( $background ), esc_attr( $color ), Orderable_Services::get_service_label( $type ) );
}
}
/**
* Modify order date/time labels.
*
* @param array $labels
* @param WC_Order $order
*
* @return array
*/
public static function modify_order_date_time_labels( $labels, $order ) {
$type = Orderable_Services_Order::get_service_type( $order );
$type_label = Orderable_Services::get_service_label( $type );
$labels['order_date']['label'] = sprintf( '%s %s', $type_label, $labels['order_date']['label'] );
$labels['order_time']['label'] = sprintf( '%s %s', $type_label, $labels['order_time']['label'] );
return $labels;
}
/**
* Save order meta.
*
* @param WC_Abstract_Order $abstract_order
* @param WC_Data_Store $data_store
*
* @return string
*/
public static function before_save_order( $abstract_order, $data_store ) {
if ( empty( $abstract_order ) ) {
return;
}
$type = Orderable_Services_Order::get_service_type( $abstract_order );
$abstract_order->update_meta_data( '_orderable_service_type', $type );
}
}