

Setup screen with the three difficulties and the top scores.
Pairsly turns any page into a memory game (also known as concentration, matching pairs, pexeso or memo): players flip two cards at a time and find every matching pair as fast and as accurately as they can. Use it for sponsor logos at a club event, a brand or product campaign, a school, kindergarten or museum page, a quiz night, or just for fun.
Cards are yours. Upload images as “Cards” (a custom post type with the familiar Media Library uploader). Published cards are in the game, drafts are not. Optionally flag a card as special and set a quota to guarantee it appears on every board – a main sponsor, an easter egg, a prize card. Until you have enough cards, a built-in deck of 16 hand-drawn animal cards tops up the board.
Scores cannot be faked. The browser never sends a score or a time that is trusted. Each game issues a signed, single-use run token; when the board is cleared the server stamps the elapsed time from its own clock and computes the score itself. Names are stored, IPs are only stored as a salted hash for rate limiting.
Three difficulties, three leaderboards. Easy / Medium / Hard with configurable pair counts (3-24), each with its own leaderboard so scores are always compared between boards of the same size. Moderate scores, clear a tier or export CSV from wp-admin.
Optional bot protection. Cloudflare Turnstile, Google reCAPTCHA v2 / v3, hCaptcha – or none. Verification is always server-side, and every provider has a test mode for local and staging sites.
Looks like your site. Light, dark and parchment presets plus fully custom colours, bundled or inherited fonts, card shape (7:10 / 3:4 / square), corner radius, an optional card-back image. Flat and square by default. Phones can run the game full-screen with a “back to site” button.
Drop it anywhere. A block (“Pairsly – Memory Game”), a shortcode ([pairs_memory_game]) and an optional dedicated page at a slug you choose (default /memory-game/) – handy for a QR code on a poster.
For developers. Every decision is filterable: pairsmg_settings, pairsmg_pair_counts, pairsmg_active_pairs, pairsmg_default_cards, pairsmg_build_deck, pairsmg_score, pairsmg_par_time, pairsmg_sanitize_name, pairsmg_client_ip, pairsmg_theme_css, pairsmg_frontend_config; actions pairsmg_run_started, pairsmg_score_saved, pairsmg_captcha_verified. Source and issues on GitHub.
The plugin makes no external requests unless you enable a bot-protection provider under Memory Game > Settings > Bot protection. When a provider is enabled, the game page loads that provider’s script and, on verification, the plugin sends the response token and the visitor’s IP address to the provider’s verification endpoint:
Mention the provider you use in your privacy policy. With the provider set to “None”, nothing leaves your server.
The bundled fonts (Rajdhani, Open Sans – both under the SIL Open Font License) are served from your own site; no font CDN is contacted.