Use case
Plugin default podporuje 3 payment methods (bank, paypal, check). Tato příručka popisuje, jak přidat čtvrtou — například cryptocurrency wallet nebo Wise/Revolut transfer.
Aktuální stav — hardcoded const
Plugin v 1.2 má payment methods jako konstantu Plugin::PAYMENT_METHODS (immutable PHP const). Pro přidání nové hodnoty potřebujete:
- Forknout plugin a upravit const přímo — vhodné pro persistent customizaci.
- Patch při runtime přes reflection — křehké, nedoporučeno.
- Počkat na hookable variantu — kandidát pro budoucí release (issue #X).
Postup forkování (doporučená cesta)
- Vytvořte vlastní fork pluginu v git repository.
- V
src/Plugin.phprozšiřte const:
public const PAYMENT_METHODS = array('bank', 'paypal', 'check', 'wise', 'crypto');
- V
src/Admin/AdminManager.phppřidejte option do<select>ve dvou render formech (edit + add affiliate). - V dashboard profile form (frontend view
DashboardProfileTab.php) přidejte stejně. - Pro každou novou metodu zvažte UI pole pro
payment_details(např. crypto wallet address validace, Wise IBAN). - Update i18n .po překlady.
Frontend tab — UI labelu
// V templates/dashboard/tabs/profile.php (nebo Views/DashboardProfileTab.php)
<option value="crypto" <?php selected($affiliate->payment_method, 'crypto'); ?>>
<?php esc_html_e('Cryptocurrency Wallet', 'affinite-wp-affiliate'); ?>
</option>
Validace v custom validation
Plugin validuje payment_method proti allowlist. Pokud chcete specifickou validaci pro novou metodu (např. crypto wallet address regex), použijte:
add_action('wp_ajax_affinite_update_affiliate_profile', function() {
if ('crypto' === ($_POST['payment_method'] ?? '')) {
$details = sanitize_text_field($_POST['payment_details'] ?? '');
if (!preg_match('/^0x[a-fA-F0-9]{40}$/', $details)) {
wp_send_json_error('Invalid Ethereum wallet address');
}
}
}, 5); // Run before plugin handler (priority 10)
Admin payout flow
Při zpracování payout requestu admin vidí payment_method a payment_details v UI. Manuálně provede transakci přes vlastní crypto exchange / Wise app a poté označí jako processed s transaction ID.
Pro automatizaci (např. crypto auto-payout přes API exchange) napojte hook na payout process action a integrate s exchange API.
