/* translators: Order channel filter value shown in WooCommerce admin for POS orders. */ __( 'POS', 'woocommerce-pos' ),
'no' => /* translators: Order channel filter value shown in WooCommerce admin for online orders. */ __( 'Online', 'woocommerce-pos' ),
);
echo '';
}
/**
* Parse the query to filter orders by POS or online.
*
* @param WP_Query $query The WP_Query instance (passed by reference).
*
* @return WP_Query
*/
public function parse_query( $query ) {
if ( isset( $_GET['pos_order'] ) && '' != $_GET['pos_order'] ) {
$meta_query = array( 'relation' => 'AND' );
if ( 'yes' == $_GET['pos_order'] ) {
$meta_query[] = array(
'relation' => 'OR',
array(
'key' => '_pos',
'value' => '1',
'compare' => '=',
),
array(
'key' => '_created_via',
'value' => 'woocommerce-pos',
'compare' => '=',
),
);
} elseif ( 'no' == $_GET['pos_order'] ) {
$meta_query[] = array(
'relation' => 'OR',
array(
'key' => '_pos',
'compare' => 'NOT EXISTS',
),
array(
'key' => '_pos',
'value' => '1',
'compare' => '!=',
),
);
$meta_query[] = array(
'relation' => 'OR',
array(
'key' => '_created_via',
'compare' => 'NOT EXISTS',
),
array(
'key' => '_created_via',
'value' => 'woocommerce-pos',
'compare' => '!=',
),
);
}
if ( isset( $query->query_vars['meta_query'] ) ) {
$query->query_vars['meta_query'] = array_merge(
$query->query_vars['meta_query'],
$meta_query
);
} else {
$query->query_vars['meta_query'] = $meta_query;
}
}
return $query;
}
/**
* Add a custom column to the orders list table.
*
* @param string[] $columns The column header labels keyed by column ID.
*
* @return string[]
*/
public function pos_shop_order_column( array $columns ): array {
$new_columns = array();
foreach ( $columns as $column_name => $column_info ) {
if ( 'order_date' === $column_name ) {
$new_columns['wcpos'] = '';
}
$new_columns[ $column_name ] = $column_info;
}
return $new_columns;
}
/**
* Display the content for the custom column.
*
* @param string $column_name The name of the column to display.
* @param int $post_id The current post ID.
*
* @return void
*/
public function pos_orders_list_column_content( string $column_name, int $post_id ): void {
if ( 'wcpos' === $column_name && woocommerce_pos_is_pos_order( $post_id ) ) {
echo '';
}
}
/**
* Add inline CSS for the POS order column width.
*
* @return void
*/
public function pos_order_column_width(): void {
// Define the URL of your custom icon.
$icon_url = PLUGIN_URL . '/assets/img/wp-menu-icon.svg';
$css = '
body.post-type-shop_order .wp-list-table .column-wcpos { width: 16px !important; padding: 0 !important; }
.wcpos-icon { display: inline-block; width: 16px; height: 16px; background: url(' . $icon_url . ') no-repeat center center; margin-top: 10px; }
';
wp_add_inline_style( 'woocommerce_admin_styles', $css );
}
}