| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <?php
- // Extends order search functionality.
- class Order_Search_Manager {
- public function __construct() {
- add_filter('manage_woocommerce_page_wc-orders_columns', array($this, 'add_external_ref_ord_no_to_search'));
- add_action('manage_woocommerce_page_wc-orders_custom_column', array($this, 'add_external_ref_ord_no_search_field'));
- add_filter('parse_query', array($this, 'process_external_ref_ord_no_search')); // Uncommented this line
- }
- /**
- * Adds the external_ref_ord_no to the list of searchable fields for orders.
- *
- * @param array $search_fields The current array of searchable fields.
- * @return array The updated array of searchable fields.
- */
- public function add_external_ref_ord_no_to_search($search_fields) {
- $search_fields[] = '_external_ref_ord_no';
- return $search_fields;
- }
- /**
- * Adds a search field for external_ref_ord_no in the order list page.
- */
- public function add_external_ref_ord_no_search_field() {
- global $typenow;
- if ('shop_order' === $typenow) {
- $external_ref_ord_no = isset($_GET['external_ref_ord_no']) ? sanitize_text_field($_GET['external_ref_ord_no']) : '';
- ?>
- <input type="text" name="external_ref_ord_no" value="<?php echo esc_attr($external_ref_ord_no); ?>" placeholder="<?php esc_attr_e('Search by External Order Number', 'studiou-wc-ord-print-statuses'); ?>">
- <?php
- }
- }
- /**
- * Processes the external_ref_ord_no search query.
- *
- * @param WP_Query $query The current WordPress query object.
- * @return WP_Query The modified query object.
- */
- public function process_external_ref_ord_no_search($query) {
- global $pagenow, $typenow;
- if ('edit.php' !== $pagenow || 'shop_order' !== $typenow || !$query->is_main_query()) {
- return $query;
- }
- if (!empty($_GET['external_ref_ord_no'])) {
- $external_ref_ord_no = sanitize_text_field($_GET['external_ref_ord_no']);
- $meta_query = $query->get('meta_query') ? $query->get('meta_query') : array();
- $meta_query[] = array(
- 'key' => '_external_ref_ord_no',
- 'value' => $external_ref_ord_no,
- 'compare' => 'LIKE',
- );
- $query->set('meta_query', $meta_query);
- }
- return $query;
- }
- }
|