Feresta - Automatic Gateway Setup releases
by Ariya Sarrafzadeh · github.com/ariyasrfz/ferestaa-wordpress-plugin · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/ariyasrfz/ferestaa-wordpress-plugin/releases/download/v1.5.2/Ferestaa-v1.5.2.zipReadme
Feresta - Automatic Gateway Setup
Author: Ariya Sarrafzadeh Version: 1.4.1
A WordPress plugin that automatically registers the Feresta SMS gateway (PersiaFava) inside popular Iranian SMS-sending plugins, so site owners don't have to hand-build an integration for each one.
Supported plugins
| Plugin | Integration mechanism |
|---|---|
| WP SMS (WSMS) | Registers via the wpsms_gateway_registry filter (v7.x+ registry architecture). Also copies a gateway class file into wp-sms/includes/gateways/. Auto-selects Feresta as the active gateway on first activation (only if no gateway is already configured). |
| Digits | Registers via the digits_sms_gateways filter directly - no file copy needed. Wired to the real send hook digits_send_sms_hook_{ID}, with a fallback path for older Digits versions via unitedover_send_sms. |
| Persian WooCommerce SMS | Two paths depending on which architecture is installed: • New (v7.x+, PW\PWSMS\Gateways namespace): copies a real gateway class (Feresta.php) into persian-woocommerce-sms/src/Gateways/, refreshed on every load so stale copies never linger.• Old (procedural WoocommerceIR_Gateways_SMS class): no extension point exists in that architecture, so the plugin overrides the existing tjp gateway slot via a Reflection-based singleton swap and relabels it "Feresta (PersiaFava)" in the dropdown. |
| Gravity Forms - OTP Verification | No custom integration needed. That plugin delegates SMS sending to wp_sms_send() / PWSMS()->send_sms(), so it picks up Feresta automatically once WP SMS or Persian WooCommerce SMS is configured. See the in-app guidance card on the dashboard. |
Project structure
feresta-gateway.php Main plugin file - dashboard menu, gateway hooks, activation/deactivation
includes/
dashboard/
dashboard.php Main dashboard UI (tabbed: account settings / supported plugins)
supported-plugins.php Per-plugin install/setup status table + troubleshooting guide
gateways/
wp-sms/
class-wpsms-gateway-feresta.php Gateway class copied into the WP SMS plugin folder
integrator.php Copy helper
digits/
app.js Admin-side helper script for the Digits settings screen
wooCommerce-sms/
Feresta.php Gateway class for the new PW\PWSMS\Gateways architecture
ws-class-integrator.php Copies Feresta.php into Persian WooCommerce SMS, always refreshed
ws-bridge.php Reflection-based tjp-slot override for the old plugin architecture
+ admin notice diagnostics for whichever architecture is detected
utils/
api-handler.php Shared Feresta API request helper
helpers.php Plugin-detection / normalization utilities
assets/
dashboard.css Dark, translucent dashboard theme (CSS custom properties / design tokens)
dashboard.js Dashboard interactivity (edit/cancel account info, retry connection)
Known limitations
- Auto-select on activation is currently only implemented for WP SMS. Digits and Persian WooCommerce SMS don't have a verified, safe-to-guess option key for "currently active gateway" - guessing wrong here risks silently doing nothing rather than crashing, but it's still not implemented until the real option key is confirmed from source.
- The
tjp-slot override (old Persian WooCommerce SMS architecture) permanently repurposes that gateway slot while Feresta is active. If a site was genuinely using the realtjp.irservice through that slot, it becomes unavailable. - Digits' credential-reading logic in
feresta-gateway.php(feresta_digits_get_credentials()/ related helpers) uses a "search every plausible option name" fallback approach, since Digits' exact settings-storage schema isn't publicly documented and varies between installs.
Development notes
- All source comments are in English; user-facing admin UI strings are in Persian (the target audience is Iranian WordPress site owners).
- Every gateway-copy operation is guarded against crashing the host site: files check for the
existence of required parent classes/interfaces before declaring anything, and integrations
fail silently (with an
error_logentry and/or admin notice) rather than fataling. - Version numbers in
feresta-gateway.php(Version:header +FERESTA_VERSIONconstant) should be bumped together on every release.
Repository version history
This repository was assembled from 12 release zips — one commit per version in chronological order, each tagged with its release number. Tagged trees are byte-identical to the original zips (line endings normalized to LF in git).
| Tag | Plugin header version | Highlight |
|---|---|---|
| v0.3 | 3.5.8 | Initial import (PIXEELL Studio baseline) |
| v0.4 | 0.09 | Rebranded to Ariya Sarrafzadeh; PWS architecture diagnostics |
| v1.0.0 | 0.09 | Persian WooCommerce SMS v7.x+ support |
| v1.1 | 1.0.1 | WooCommerce SMS gateway auth switched to username/password |
| v1.1.1 | 1.1 | Branding pass (menu icon, footer credit) |
| v1.2 | 1.2 | Dashboard redesign (design tokens, no emoji) |
| v1.3 | 1.3 | Filter-based Digits registration; WP SMS auto-select |
| v1.4 | 1.4 | Supported-plugins table refinements |
| v1.4.1 | 1.4.1 | Documentation pass, this README added |
| v1.5 | 1.5 | JAY Login & Register integration |
| v1.5.1 | 1.5.1 | JAY bridge survives provider whitelist sanitizer |
| v1.5.2 | 1.5.2 | JAY integration removed |
Full details: CHANGELOG.md.
Packaging a release zip
The installable zip must contain the plugin files inside a top-level Ferestaa/
folder. Build it straight from a tag (.gitignore, .gitattributes and
CHANGELOG.md are marked export-ignore, so they stay out of the archive):
git archive --format=zip --prefix=Ferestaa/ -o Ferestaa-v1.5.2.zip v1.5.2Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| v1.5.2 | Sep 7, 2026 | Ferestaa-v1.5.2.zip | 0 |
| v1.5.1 | Sep 7, 2026 | Ferestaa-v1.5.1.zip | 0 |
| v1.5 | Sep 7, 2026 | Ferestaa-v1.5.zip | 0 |
| v1.4.1 | Sep 7, 2026 | Ferestaa-v1.4.1.zip | 0 |
| v1.4 | Sep 7, 2026 | Ferestaa-v1.4.zip | 0 |
| v1.3 | Sep 7, 2026 | Ferestaa-v1.3.zip | 0 |
| v1.2 | Sep 7, 2026 | Ferestaa-v1.2.zip | 0 |
| v1.1.1 | Sep 7, 2026 | Ferestaa-Ariya.1.1.1.zip | 0 |
| v1.1 | Sep 7, 2026 | Ferestaa-v1.1.zip | 0 |
| v1.0.0 | Sep 7, 2026 | Ferestaa-v1.0.0.zip | 0 |
| v0.4 | Sep 7, 2026 | Ferestaa-v0.4.zip | 0 |
| v0.3 | Sep 7, 2026 | Ferestaa-v0.3.zip | 0 |