/** * This file represents an example of the code that themes would use to register * the required plugins. * * It is expected that theme authors would copy and paste this code into their * functions.php file, and amend to suit. * * @package TGM-Plugin-Activation * @subpackage Example * @version 2.3.6 * @author Thomas Griffin * @author Gary Jones * @copyright Copyright (c) 2012, Thomas Griffin * @license http://opensource.org/licenses/gpl-2.0.php GPL v2 or later * @link https://github.com/thomasgriffin/TGM-Plugin-Activation */ /** * Include the TGM_Plugin_Activation class. */ require_once dirname( __FILE__ ) . '/class-tgm-plugin-activation.php'; add_action( 'tgmpa_register', 'my_theme_register_required_plugins' ); /** * Register the required plugins for this theme. * * In this example, we register two plugins - one included with the TGMPA library * and one from the .org repo. * * The variable passed to tgmpa_register_plugins() should be an array of plugin * arrays. * * This function is hooked into tgmpa_init, which is fired within the * TGM_Plugin_Activation class constructor. */ function my_theme_register_required_plugins() { /** * Array of plugin arrays. Required keys are name and slug. * If the source is NOT from the .org repo, then source is also required. */ $plugins = array( // This is an example of how to include a plugin pre-packaged with a theme array( 'name' => 'Contact Form 7', // The plugin name 'slug' => 'contact-form-7', // The plugin slug (typically the folder name) 'source' => get_stylesheet_directory() . '/includes/plugins/contact-form-7.zip', // The plugin source 'required' => true, // If false, the plugin is only 'recommended' instead of required 'version' => '', // E.g. 1.0.0. If set, the active plugin must be this version or higher, otherwise a notice is presented 'force_activation' => false, // If true, plugin is activated upon theme activation and cannot be deactivated until theme switch 'force_deactivation' => false, // If true, plugin is deactivated upon theme switch, useful for theme-specific plugins 'external_url' => '', // If set, overrides default API URL and points to an external URL ), array( 'name' => 'Cherry Plugin', // The plugin name. 'slug' => 'cherry-plugin', // The plugin slug (typically the folder name). 'source' => PARENT_DIR . '/includes/plugins/cherry-plugin.zip', // The plugin source. 'required' => true, // If false, the plugin is only 'recommended' instead of required. 'version' => '1.1', // E.g. 1.0.0. If set, the active plugin must be this version or higher, otherwise a notice is presented. 'force_activation' => true, // If true, plugin is activated upon theme activation and cannot be deactivated until theme switch. 'force_deactivation' => false, // If true, plugin is deactivated upon theme switch, useful for theme-specific plugins. 'external_url' => '', // If set, overrides default API URL and points to an external URL. ) ); /** * Array of configuration settings. Amend each line as needed. * If you want the default strings to be available under your own theme domain, * leave the strings uncommented. * Some of the strings are added into a sprintf, so see the comments at the * end of each line for what each argument will be. */ $config = array( 'domain' => CURRENT_THEME, // Text domain - likely want to be the same as your theme. 'default_path' => '', // Default absolute path to pre-packaged plugins 'parent_menu_slug' => 'themes.php', // Default parent menu slug 'parent_url_slug' => 'themes.php', // Default parent URL slug 'menu' => 'install-required-plugins', // Menu slug 'has_notices' => true, // Show admin notices or not 'is_automatic' => true, // Automatically activate plugins after installation or not 'message' => '', // Message to output right before the plugins table 'strings' => array( 'page_title' => theme_locals("page_title"), 'menu_title' => theme_locals("menu_title"), 'installing' => theme_locals("installing"), // %1$s = plugin name 'oops' => theme_locals("oops_2"), 'notice_can_install_required' => _n_noop( theme_locals("notice_can_install_required"), theme_locals("notice_can_install_required_2") ), // %1$s = plugin name(s) 'notice_can_install_recommended' => _n_noop( theme_locals("notice_can_install_recommended"), theme_locals("notice_can_install_recommended_2") ), // %1$s = plugin name(s) 'notice_cannot_install' => _n_noop( theme_locals("notice_cannot_install"), theme_locals("notice_cannot_install_2") ), // %1$s = plugin name(s) 'notice_can_activate_required' => _n_noop( theme_locals("notice_can_activate_required"), theme_locals("notice_can_activate_required_2") ), // %1$s = plugin name(s) 'notice_can_activate_recommended' => _n_noop( theme_locals("notice_can_activate_recommended"), theme_locals("notice_can_activate_recommended_2") ), // %1$s = plugin name(s) 'notice_cannot_activate' => _n_noop( theme_locals("notice_cannot_activate"), theme_locals("notice_cannot_activate_2") ), // %1$s = plugin name(s) 'notice_ask_to_update' => _n_noop( theme_locals("notice_ask_to_update"), theme_locals("notice_ask_to_update_2") ), // %1$s = plugin name(s) 'notice_cannot_update' => _n_noop( theme_locals("notice_cannot_update"), theme_locals("notice_cannot_update_2") ), // %1$s = plugin name(s) 'install_link' => _n_noop( theme_locals("install_link"), theme_locals("install_link_2") ), 'activate_link' => _n_noop( theme_locals("activate_link"), theme_locals("activate_link_2") ), 'return' => theme_locals("return"), 'plugin_activated' => theme_locals("plugin_activated"), 'complete' => theme_locals("complete"), // %1$s = dashboard link 'nag_type' => theme_locals("updated") // Determines admin notice type - can only be 'updated' or 'error' ) ); tgmpa( $plugins, $config ); } Four Deposits, One Wallet: Inside the Spinfin Loyalty Machine

Four Deposits, One Wallet: Inside the Spinfin Loyalty Machine

Most multi-vertical platforms make you pick a lane. Casino over here, sportsbook over there, and a crypto wallet bolted on somewhere else entirely. Spinfin Casino refuses that split - slots, live dealer tables, sports, esports and blockchain banking all share a single balance and a single login. Licensed in Costa Rica, stocked by 87-plus studios, it's built for players who are tired of juggling accounts.

A Welcome Package That Refuses to Arrive All at Once

The headline number is 350% up to £10,000 with 500 free spins, but the structure matters more than the total. It's spread across four qualifying deposits, with escalating match percentages, so the value lands in stages rather than one lump. Wagering sits at 30x the combined deposit and bonus, free spin winnings carry the same 30x rollover, each bonus lives for ten days, and the maximum bet while a bonus is active is capped at £5.

After the welcome, the calendar keeps moving. A 77% reload up to £700 with 50 free spins runs Monday to Thursday; a 50% weekend refresh up to £700 with the same spin bundle covers Friday to Sunday. A £20 deposit triggers the bonus, £50 unlocks the spins. Sports bettors get their own 10% weekly cashback, up to £500, earned alongside whatever the casino side pays out.

7,600 Titles, and Filters That Actually Help

Slots dominate, supplied by Playtech, No Limit City, Red Tiger, BGaming, Quickspin, Thunderkick and Endorphina among others. Volatility swings from steady grinders like Burning Hot to the cluster-pay chaos of Aztec Clusters, with RTPs mostly landing between 95% and 97%. The live floor covers European, American and Speed Roulette, classic and Speed Blackjack, baccarat with side bets, Casino Hold'em, Sic Bo, Dragon Tiger, and VIP rooms with higher limits. Game shows sit alongside the dealer tables for anyone wanting a more social format.

The VIP Ladder Cares About the Last 90 Days

Progression is measured on recent activity, not lifetime totals - which means a dormant account slides back down. Five levels, and the terms tighten as you climb:

Level Weekly cashback Cashback wagering What else
1-2 Standard promos - Base limits
3 5% 5x Higher withdrawal limits, sports cashback
4 10% 3x Personal account manager
5 15% 1x Priority withdrawal handling

Banking Without the Friction

  • Visa and Mastercard for standard card traffic
  • Apple Pay and Google Pay for biometric mobile top-ups
  • Online banking transfers
  • Bitcoin, Ethereum, Litecoin and Tether for crypto players

Withdrawals go through the finance team within three business days, Monday to Friday, 6 AM to 5 PM GMT, and crypto usually clears fastest. Payouts route back to the method you funded with wherever possible, and up to three requests can sit pending at once.

Signing Up, and What They'll Ask For

  1. Enter an email, choose a password, and pick EUR or GBP as your currency.
  2. Add your name, date of birth and address so age and identity checks can run.
  3. Submit ID, proof of address and proof you own the deposit method, within 30 days of the request.
  4. Wait for verification - usually wrapped inside ten days.

One account per person, household, phone, email and IP. No third-party payments, no VPNs to dodge regional blocks, 18 and over only.

Support and the Guardrails

Live chat runs around the clock; email handles documents and formal requests. Deposit limits, reality checks, time-outs and cool-off periods are all self-serve from the account area, while self-exclusion goes through support. Inactive accounts - no login for 180 days - can attract a small monthly maintenance fee until the balance clears.

Here's the practical bit: map the reload schedule to your own habits before you deposit. If you play midweek, the 77% Monday-to-Thursday top-up is the one worth timing your deposits around. If weekends are your thing, wait. Chasing both on the same bankroll is how a good bonus structure turns into a bad month.