private function query_completed_missing_doublecheck($after_mysql, $before_mysql, $ship, $per_page, $paged) { // ✅ Ensure strings $after_mysql = is_string($after_mysql) ? trim($after_mysql) : ''; $before_mysql = is_string($before_mysql) ? trim($before_mysql) : ''; // ✅ Woo date_completed expects string (not array) $date_completed = ''; if ($after_mysql && $before_mysql) { $date_completed = $after_mysql . '...' . $before_mysql; } elseif ($after_mysql) { $date_completed = '>=' . $after_mysql; } elseif ($before_mysql) { $date_completed = '<=' . $before_mysql; } $missing_meta = array( 'relation' => 'OR', array('key' => self::META_DONE, 'compare' => 'NOT EXISTS'), array('key' => self::META_DONE, 'value' => '1', 'compare' => '!='), ); $meta_query = array( 'relation' => 'AND', $missing_meta, ); if ($ship !== 'all') { $needle = ($ship === 'none') ? '|none|' : ('|' . $ship . '|'); $meta_query[] = array( 'key' => self::META_SHIP_INST_IDS, 'value' => $needle, 'compare' => 'LIKE', ); } $args = array( 'type' => 'shop_order', 'status' => array(self::REQUIRED_STATUS), 'limit' => $per_page, 'page' => $paged, 'paginate' => true, 'return' => 'ids', 'orderby' => 'date', 'order' => 'DESC', 'meta_query' => $meta_query, ); if ($date_completed) { $args['date_completed'] = $date_completed; } $q = wc_get_orders($args); $ids = is_array($q->orders) ? $q->orders : array(); $total = isset($q->total) ? (int)$q->total : 0; return array('ids' => $ids, 'total' => $total); }