meta_exists($key) : $object->get_meta($key, $single, $context) !== ''; return $object->get_meta($old !== $key && !$exists ? $old : $key, $single, $context); } function courierapp_compat_query_args($args) { $key = $args['meta_key'] ?? ''; $old = courierapp_compat_legacy_key($key); if ($old === $key) return $args; $clause = ['key' => $key, 'compare' => $args['meta_compare'] ?? '=']; if (isset($args['meta_value'])) $clause['value'] = $args['meta_value']; $legacy = $clause; $legacy['key'] = $old; $args['meta_query'] = ['relation' => 'OR', $clause, ['relation' => 'AND', ['key' => $key, 'compare' => 'NOT EXISTS'], $legacy]]; unset($args['meta_key'], $args['meta_value'], $args['meta_compare']); return $args; } // Compatibility routes for work scheduled before the namespace upgrade only. // Newly scheduled work uses courierapp_; old jobs must not disappear or repeat. foreach (['connect_paid_order', 'connect_refresh_order', 'ai_catalog_tick'] as $courierapp_legacy_hook) { add_action('ca_' . $courierapp_legacy_hook, static function (...$args) use ($courierapp_legacy_hook) { do_action('courierapp_' . $courierapp_legacy_hook, ...$args); }, 10, 10); }