{"id":318470,"date":"2026-05-29T06:20:48","date_gmt":"2026-05-29T06:20:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/chesspairings-tournament-showcase\/"},"modified":"2026-08-15T15:19:07","modified_gmt":"2026-08-15T15:19:07","slug":"chesspairings","status":"publish","type":"plugin","link":"https:\/\/bs.wordpress.org\/plugins\/chesspairings\/","author":23506231,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.0","stable_tag":"0.2.0","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"ChessPairings \u2014 Tournament Showcase","header_author":"Stefano Loberti","header_description":"Mostra i tuoi tornei di scacchi gestiti su my.chesspairings.org direttamente sul tuo sito WordPress. Classifiche, abbinamenti, iscritti, calendario e link di iscrizione, in HTML nativo che eredita lo stile del tuo tema.","assets_banners_color":"152545","last_updated":"2026-08-15 15:19:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wpchess.com","header_author_uri":"https:\/\/chesspairings.org","rating":0,"author_block_rating":0,"active_installs":0,"downloads":302,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"stefanoloberti","date":"2026-05-29 06:27:03"},"0.1.2":{"tag":"0.1.2","author":"stefanoloberti","date":"2026-08-15 08:32:13"},"0.2.0":{"tag":"0.2.0","author":"stefanoloberti","date":"2026-08-15 15:19:07"}},"upgrade_notice":{"0.2.0":"<p>Adds the improved Gutenberg workflow, automatic tournament selection, round schedules, resilient cache, frontend tools, calendar downloads and diagnostics.<\/p>","0.1.2":"<p>Fixes incomplete public links, online-registration visibility and team tournament links.<\/p>","0.1.1":"<p>Review fixes: enqueued scripts, text domain, external services documentation.<\/p>","0.1.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3553015,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3553015,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"chesspairings\/tournament":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"chesspairings\/tournament","title":"ChessPairings Tournament","category":"embed","icon":"awards","description":"Mostra un torneo o un calendario tornei gestito su my.chesspairings.org.","keywords":["chess","scacchi","tournament","torneo","chesspairings"],"version":"0.2.0","textdomain":"chesspairings","attributes":{"view":{"type":"string","default":"torneo","enum":["torneo","classifica","abbinamenti","iscritti","turni","bando","iscriviti","tornei","calendario"]},"torneoId":{"type":"number","default":0},"selectionMode":{"type":"string","default":"specifico","enum":["specifico","corrente","prossimo","ultimo","automatico"]},"turno":{"type":"string","default":"ultimo"},"tipo":{"type":"string","default":"auto","enum":["auto","individuale","squadre"]},"tipoCalendario":{"type":"string","default":"miei","enum":["miei","community"]},"listStatus":{"type":"string","default":"iscrizioni,in_corso"},"calendarStatus":{"type":"string","default":""},"calendarYear":{"type":"number","default":0},"calendarMonth":{"type":"number","default":0},"calendarFederation":{"type":"string","default":""},"limit":{"type":"number","default":0},"includeTeams":{"type":"boolean","default":true},"layout":{"type":"string","default":"cards","enum":["cards","list"]},"registrationOrder":{"type":"string","default":"rating","enum":["rating","alfabetico","sezione"]},"showTiebreaks":{"type":"boolean","default":true},"initialTab":{"type":"string","default":"info","enum":["info","iscritti","squadre","turni","abbinamenti","classifica"]},"enableSearch":{"type":"boolean","default":true},"refreshMinutes":{"type":"number","default":0}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/edit.js","example":{"attributes":{"view":"classifica","torneoId":0}}}},"tagged_versions":["0.1.1","0.1.2","0.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3553015,"resolution":"1","location":"assets","locale":"","width":880,"height":660},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3553015,"resolution":"2","location":"assets","locale":"","width":880,"height":660},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3553015,"resolution":"3","location":"assets","locale":"","width":1002,"height":845},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3553015,"resolution":"4","location":"assets","locale":"","width":880,"height":660},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3553015,"resolution":"5","location":"assets","locale":"","width":880,"height":660}},"screenshots":{"1":"Settings page with connection verification","2":"Standings example with tiebreaks","3":"Pairings example for a round","4":"Full tournament page with tabs","5":"Community calendar"}},"plugin_section":[],"plugin_tags":[17259,14241,264880,30579,14116],"plugin_category":[],"plugin_contributors":[264881],"plugin_business_model":[],"class_list":["post-318470","plugin","type-plugin","status-publish","hentry","plugin_tags-chess","plugin_tags-club","plugin_tags-pairings","plugin_tags-standings","plugin_tags-tournament","plugin_contributors-stefanoloberti","plugin_committers-stefanoloberti"],"banners":{"banner":"https:\/\/ps.w.org\/chesspairings\/assets\/banner-772x250.png?rev=3553015","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/chesspairings\/assets\/icon-256x256.png?rev=3553015","icon_2x":"https:\/\/ps.w.org\/chesspairings\/assets\/icon-256x256.png?rev=3553015","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/chesspairings\/assets\/screenshot-1.png?rev=3553015","caption":"Settings page with connection verification"},{"src":"https:\/\/ps.w.org\/chesspairings\/assets\/screenshot-2.png?rev=3553015","caption":"Standings example with tiebreaks"},{"src":"https:\/\/ps.w.org\/chesspairings\/assets\/screenshot-3.png?rev=3553015","caption":"Pairings example for a round"},{"src":"https:\/\/ps.w.org\/chesspairings\/assets\/screenshot-4.png?rev=3553015","caption":"Full tournament page with tabs"},{"src":"https:\/\/ps.w.org\/chesspairings\/assets\/screenshot-5.png?rev=3553015","caption":"Community calendar"}],"raw_content":"<!--section=description-->\n<p>ChessPairings \u2014 Tournament Showcase is a \"showcase\" plugin that integrates tournaments managed on the SaaS platform <a href=\"https:\/\/my.chesspairings.org\/\">my.chesspairings.org<\/a> into your WordPress site.<\/p>\n\n<p>The plugin <strong>does not manage<\/strong> tournaments inside WordPress: pairing generation, result entry, player management, Telegram notifications, auto-publishing to chess-results.com and everything else stays on my.chesspairings.org. The plugin simply <strong>displays<\/strong> your tournament data on your WP site, using native HTML that inherits your theme's styles.<\/p>\n\n<p><strong>What you can do with the plugin:<\/strong><\/p>\n\n<ul>\n<li>Show standings with tiebreaks<\/li>\n<li>Show pairings by round<\/li>\n<li>Show the registered players list (or teams + roster for team tournaments)<\/li>\n<li>Show the tournament announcement \/ regulations<\/li>\n<li>Add a \"Register\" button linking to the online registration form<\/li>\n<li>Publish a calendar of your tournaments or the community calendar (by federation)<\/li>\n<li>List all your tournaments with cards \u2014 status, dates, registration button<\/li>\n<li>Display a full tournament page with tabs (info \/ registered \/ pairings \/ standings)<\/li>\n<li>Select a tournament by name in Gutenberg, with a real editor preview<\/li>\n<li>Automatically show the current, next or most recently completed tournament<\/li>\n<li>Show the published round schedule and progress<\/li>\n<li>Search and sort frontend tables, print views and optionally auto-refresh them<\/li>\n<li>Download tournament dates in iCalendar format<\/li>\n<li>Keep showing the last valid data during temporary API outages<\/li>\n<\/ul>\n\n<p><strong>Advantages over an iframe or a screenshot:<\/strong><\/p>\n\n<ul>\n<li>Native HTML that inherits the theme's styles (fonts, colors, spacing)<\/li>\n<li>SEO-friendly (indexable content, not in an iframe)<\/li>\n<li>Mobile responsive by default<\/li>\n<li>Automatic caching to avoid overloading the API (configurable 30\u2013300s)<\/li>\n<\/ul>\n\n<p><strong>ChessPairings account:<\/strong> the plugin requires a free account on <a href=\"https:\/\/my.chesspairings.org\/\">my.chesspairings.org<\/a> and a free API key generated from your profile. The SaaS platform is completely free.<\/p>\n\n<p><strong>Languages:<\/strong> the plugin is translated in 7 languages: English, Italian, Spanish, French, German, Russian, Czech.<\/p>\n\n<h3>Available Shortcodes<\/h3>\n\n<p><strong>Individual tournaments:<\/strong><\/p>\n\n<ul>\n<li><code>[chesspairings_torneo id=\"N\"]<\/code> \u2014 full tournament page with tabs<\/li>\n<li><code>[chesspairings_classifica id=\"N\"]<\/code> \u2014 standings only<\/li>\n<li><code>[chesspairings_abbinamenti id=\"N\" turno=\"ultimo\"]<\/code> \u2014 pairings for a round<\/li>\n<li><code>[chesspairings_iscritti id=\"N\"]<\/code> \u2014 registered players list<\/li>\n<li><code>[chesspairings_turni id=\"N\"]<\/code> \u2014 published round schedule and progress<\/li>\n<li><code>[chesspairings_bando id=\"N\"]<\/code> \u2014 tournament announcement<\/li>\n<li><code>[chesspairings_iscriviti id=\"N\"]<\/code> \u2014 registration button<\/li>\n<li><code>[chesspairings_tornei]<\/code> \u2014 tournament listing with cards (status, dates, registration)<\/li>\n<li><code>[chesspairings_calendario tipo=\"miei\"]<\/code> \u2014 tournament calendar (miei | community)<\/li>\n<\/ul>\n\n<p><strong>Team tournaments:<\/strong><\/p>\n\n<ul>\n<li><code>[chesspairings_torneo_squadre id=\"N\"]<\/code> \u2014 full team tournament page<\/li>\n<li><code>[chesspairings_classifica_squadre id=\"N\"]<\/code> \u2014 team standings<\/li>\n<li><code>[chesspairings_abbinamenti_squadre id=\"N\" turno=\"ultimo\"]<\/code> \u2014 team pairings<\/li>\n<li><code>[chesspairings_squadre id=\"N\"]<\/code> \u2014 teams + roster<\/li>\n<li><code>[chesspairings_bando_squadre id=\"N\"]<\/code> \u2014 team tournament announcement<\/li>\n<li><code>[chesspairings_iscriviti_squadre id=\"N\"]<\/code> \u2014 team registration button<\/li>\n<\/ul>\n\n<p>All shortcodes are also available as the Gutenberg block \"<strong>ChessPairings Tournament<\/strong>\", including the tournament list. The block provides a searchable tournament selector, automatic selection modes, advanced filters and a real API preview in the editor.<\/p>\n\n<p>To keep a page automatically connected to the most relevant event, use for example:<\/p>\n\n<pre><code>[chesspairings_torneo selezione=\"automatico\" tipo=\"auto\"]&lt;h3&gt;External services&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>This plugin connects to the <strong>ChessPairings<\/strong> API (<code>my.chesspairings.org\/api\/v1<\/code>) to retrieve tournament data (standings, pairings, registered players, calendar). All API calls are made server-side from your WordPress installation \u2014 no data is sent from your visitors' browsers.<\/p>\n\n<p><strong>When data is sent:<\/strong> every time a page containing a ChessPairings shortcode or block is loaded (subject to local caching, configurable 30\u2013300 seconds).<\/p>\n\n<p><strong>What data is sent:<\/strong> your API key (via <code>Authorization<\/code> header), the requested tournament ID, and the WordPress site URL (via <code>User-Agent<\/code> header).<\/p>\n\n<p><strong>No visitor personal data<\/strong> (IP address, cookies, browser info) is transmitted to the service.<\/p>\n\n<p>This service is provided by Stefano Loberti (chesspairings.org):<\/p>\n\n<ul>\n<li><a href=\"https:\/\/my.chesspairings.org\/tos\/terms.php\">Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/my.chesspairings.org\/tos\/privacy.php\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>chesspairings<\/code> folder to <code>wp-content\/plugins\/<\/code> (or install the zip from the WordPress admin panel).<\/li>\n<li>Activate the plugin from the <strong>Plugins<\/strong> menu.<\/li>\n<li>Go to <strong>Settings \u2192 ChessPairings<\/strong>.<\/li>\n<li>Generate an API key from your my.chesspairings.org profile (<strong>API<\/strong> tab \u2192 <strong>Generate token<\/strong>).<\/li>\n<li>Paste the token in the settings page and click <strong>Verify connection<\/strong>.<\/li>\n<li><p>Add a shortcode to any page or post:<\/p>\n\n<p>[chesspairings_torneo id=\"123\"]<\/p><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20chesspairings%20account%3F\"><h3>Do I need a ChessPairings account?<\/h3><\/dt>\n<dd><p>Yes, it's free. Register on <a href=\"https:\/\/my.chesspairings.org\/\">my.chesspairings.org<\/a>, create your tournaments there, then install the plugin to display them on your WP site.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20look%20of%20the%20tables%3F\"><h3>Can I customize the look of the tables?<\/h3><\/dt>\n<dd><p>Yes, in two ways:\n1. The plugin uses CSS variables that auto-adapt to the theme. You can override them with custom CSS.\n2. Every template is override-able from the theme: copy a file from <code>chesspairings\/templates\/<\/code> to <code>your-theme\/chesspairings\/<\/code> and modify it.<\/p><\/dd>\n<dt id=\"how%20heavy%20is%20the%20api%20load%20per%20page%20view%3F\"><h3>How heavy is the API load per page view?<\/h3><\/dt>\n<dd><p>Responses are cached for 60s by default (configurable 30\u2013300s). So even with 100 visits per minute, the API receives ~1 call per minute per shortcode.<\/p><\/dd>\n<dt id=\"can%20i%20show%20private%20tournaments%3F\"><h3>Can I show private tournaments?<\/h3><\/dt>\n<dd><p>Yes, as long as the tournament belongs to the API key owner. Visibility (public\/private) only controls whether it appears in the community calendar.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20my.chesspairings.org%20is%20temporarily%20unreachable%3F\"><h3>What happens if my.chesspairings.org is temporarily unreachable?<\/h3><\/dt>\n<dd><p>With resilient cache enabled (the default), the plugin displays the last valid response for up to 24 hours and marks it with its update time. If no previous response exists, it shows an inline error message. The rest of your WP site is unaffected.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20data%20to%20my%20visitors%3F\"><h3>Does the plugin send data to my visitors?<\/h3><\/dt>\n<dd><p>No. The plugin calls the API server-side from WordPress \u2014 no client-side JS fetch. No cookies, no trackers.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added: searchable tournament selector and real API preview in the Gutenberg editor.<\/li>\n<li>Added: Gutenberg views and controls for tournament lists, round schedules, filters, limits, layouts and initial tabs.<\/li>\n<li>Added: automatic selection of the current, next or most recently completed tournament.<\/li>\n<li>Added: <code>[chesspairings_turni]<\/code> round schedule shortcode for individual and team tournaments.<\/li>\n<li>Added: progressive frontend search, sortable tables, print controls and optional timed refresh.<\/li>\n<li>Added: signed iCalendar downloads and SportsEvent structured data.<\/li>\n<li>Added: resilient 24-hour last-known-good cache for temporary API failures.<\/li>\n<li>Added: shortcode generator and API\/cache diagnostics in Settings.<\/li>\n<li>Security: editor REST endpoints require editing permissions and never return the API key.<\/li>\n<li>Compatibility: all enhancements retain a complete server-rendered fallback for WordPress 5.8+.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Fixed: public and registration links now use the complete tokenized URLs returned by the API.<\/li>\n<li>Fixed: registration buttons respect the online-registration setting and fail closed on API errors.<\/li>\n<li>Fixed: team registration and announcement blocks now use their team-specific endpoints.<\/li>\n<li>Fixed: team match scores support both current and legacy API response shapes.<\/li>\n<li>Fixed: public links preserve the WordPress site language.<\/li>\n<li>Fixed: tab and round navigation no longer collides when multiple tournament blocks share a page.<\/li>\n<li>Security: API messages are rendered as text in the admin page and cache keys hash the complete API token.<\/li>\n<li>Changed: Gutenberg asset versions now match the plugin version.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Fixed: inline scripts now properly enqueued via wp_enqueue_script.<\/li>\n<li>Fixed: text domain aligned to plugin slug.<\/li>\n<li>Added: external services section with Terms of Service and Privacy Policy links.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: 12 shortcodes + Gutenberg block + overridable templates + 7 languages.<\/li>\n<\/ul>","raw_excerpt":"Display chess tournaments managed on my.chesspairings.org directly on your WordPress site: standings, pairings, registered players, calendar.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/318470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=318470"}],"author":[{"embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/stefanoloberti"}],"wp:attachment":[{"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=318470"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=318470"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=318470"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=318470"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=318470"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=318470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}