'Premium required' ], 403 ); } $result = RedisObjectCache::flush(); if ( $result ) { return wp_send_json_success( [ 'message' => 'Redis cache flushed' ] ); } return wp_send_json_error( [ 'message' => 'Failed to flush Redis — is it running?' ] ); } /** * POST /redis-toggle * Enable or disable the Redis object cache (deploys / removes drop-in). */ public function toggle( WP_REST_Request $request ) { if ( ! PremiumFeatures::is_premium() ) { return wp_send_json_error( [ 'message' => 'Premium required' ], 403 ); } $params = (array) $request->get_json_params(); $enable = ! empty( $params['enable'] ); $fullpage = ! empty( $params['enable_fullpage'] ); Settings::set_settings( [ 'enable_redis_object_cache' => $enable, 'enable_redis_fullpage' => $fullpage, ] ); if ( $enable ) { $deployed = RedisObjectCache::maybe_deploy_dropin(); if ( ! $deployed && ! RedisObjectCache::is_our_dropin() ) { return wp_send_json_error( [ 'message' => 'A foreign object-cache.php already exists. Remove it first.', ] ); } } else { RedisObjectCache::remove_dropin(); } return wp_send_json_success( [ 'enabled' => $enable, 'status' => RedisObjectCache::get_status(), ] ); } }