'(?i)^adscale/GetKeys$', 'query_vars' => [ 'adscaleGetKeys' => 1 ], 'handler' => [ ServiceGetKeys::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/LoginToken$', 'query_vars' => [ 'adscaleLoginToken' => 1 ], 'handler' => [ ServiceLoginToken::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/Update$', 'query_vars' => [ 'adscaleUpdate' => 1 ], 'handler' => [ ServiceUpdate::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/Status$', 'query_vars' => [ 'adscaleStatus' => 1 ], 'handler' => [ ServiceStatus::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/Proxy$', 'query_vars' => [ 'adscaleProxy' => 1 ], 'handler' => [ ServiceProxy::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/LastOrder$', 'query_vars' => [ 'adscaleLastOrder' => 1 ], 'handler' => [ ServiceLastOrder::class, 'initContent' ], ], // ======================= PluginApi ======================+ [ 'regex' => '(?i)^adscale/shopInfo$', 'query_vars' => [ 'adscaleShopInfo' => 1 ], 'handler' => [ PluginApiShopInfo::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/categories$', 'query_vars' => [ 'adscaleCategories' => 1 ], 'handler' => [ PluginApiCategories::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/categories/count$', 'query_vars' => [ 'adscaleCategoriesCount' => 1 ], 'handler' => [ PluginApiCategoriesCount::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/products$', 'query_vars' => [ 'adscaleProducts' => 1 ], 'handler' => [ PluginApiProducts::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/products/count$', 'query_vars' => [ 'adscaleProductsCount' => 1 ], 'handler' => [ PluginApiProductsCount::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/order$', 'query_vars' => [ 'adscaleOrder' => 1 ], 'handler' => [ PluginApiOrder::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/orders$', 'query_vars' => [ 'adscaleOrders' => 1 ], 'handler' => [ PluginApiOrders::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/orders/count$', 'query_vars' => [ 'adscaleOrdersCount' => 1 ], 'handler' => [ PluginApiOrdersCount::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/customers$', 'query_vars' => [ 'adscaleCustomers' => 1 ], 'handler' => [ PluginApiCustomers::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/changes$', 'query_vars' => [ 'adscaleChanges' => 1 ], 'handler' => [ PluginApiChanges::class, 'initContent' ], ], [ 'regex' => '(?i)^adscale/shipping$', 'query_vars' => [ 'adscaleShipping' => 1 ], 'handler' => [ PluginApiShipping::class, 'initContent' ], ], ]; public static function handleApiRequests() { foreach ( self::$endpointsRules as $rule ) { if ( is_callable( $rule['handler'] ) ) { call_user_func( $rule['handler'] ); } } } public static function addEndpoints() { $needRewriteOptionRefresh = false; $rewrite_rules = get_option( 'rewrite_rules' ); foreach ( self::$endpointsRules as $rule ) { $query = 'index.php?' . build_query( $rule['query_vars'] ); add_rewrite_rule( $rule['regex'], $query, 'top' ); if ( is_array( $rewrite_rules ) && ! array_key_exists( $rule['regex'], $rewrite_rules ) ) { $needRewriteOptionRefresh = true; } if ( $needRewriteOptionRefresh ) { delete_option( 'rewrite_rules' ); } } } public static function addQueryVars( $vars ) { foreach ( self::$endpointsRules as $rule ) { if ( ! empty( $rule['query_vars'] ) ) { if ( is_array( $rule['query_vars'] ) ) { foreach ( $rule['query_vars'] as $var_name => $var_value ) { if ( is_string( $var_name ) ) { $vars[] = $var_name; } } } elseif ( is_string( $rule['query_vars'] ) ) { $vars[] = $rule['query_vars']; } } } return $vars; } }