/* 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 ); } }