{"id":401970,"date":"2026-11-13T09:46:22","date_gmt":"2026-11-13T09:46:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/blyzer-events\/"},"modified":"2026-11-13T09:46:11","modified_gmt":"2026-11-13T09:46:11","slug":"blyzer-events","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/blyzer-events\/","author":23432123,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.6.0","stable_tag":"1.6.0","tested":"7.1.4","requires":"6.3","requires_php":"8.0","requires_plugins":null,"header_name":"Blyzer Events","header_author":"Blyzer.net","header_description":"Display your Blyzer.net tournaments, leagues and races \u2013 event info, teams, group standings, playoff bracket, matches, players and race results \u2013 with a block, an Elementor widget or shortcodes, updated live.","last_updated":"2026-11-13 09:46:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.blyzer.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":51,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.6.0":{"tag":"1.6.0","author":"blyzernet","date":"2026-11-13 09:46:11","revision":3800127}},"upgrade_notice":{"1.6.0":"<p>Block and Elementor widget, live results during the event, countdown and a simpler setup. Fewer requests to Blyzer.net. Shortcodes and custom templates keep working.<\/p>","1.5.0":"<p>New design, whole-event shortcode with tabs, races, real playoff bracket and better behaviour when Blyzer.net is down. Custom templates keep working.<\/p>","1.4.0":"<p>Fixes fatal errors and accidental data loss on deactivation. Update recommended.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3800127,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3800127,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3800127,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3800127,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3800127,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"blyzer-events\/event":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"blyzer-events\/event","version":"1.6.0","title":"Blyzer event","category":"widgets","icon":"awards","description":"Results, standings, playoff and matches of your Blyzer.net event.","keywords":["blyzer","tournament","league","results","standings"],"textdomain":"blyzer-events","attributes":{"eventId":{"type":"integer","default":0},"section":{"type":"string","default":"tournament","enum":["tournament","event","teams","groups","playoff_rounds","matches","players","race_stages","race_standings"]},"theme":{"type":"string","default":"","enum":["","light","dark","auto"]},"limit":{"type":"integer","default":0},"upcoming":{"type":"string","default":""},"recent":{"type":"string","default":""},"group":{"type":"string","default":""},"status":{"type":"string","default":"","enum":["","played","upcoming","live"]},"phase":{"type":"string","default":"","enum":["","groups","playoff","friendly"]},"groupBy":{"type":"string","default":"","enum":["","auto","round","group","day","none"]},"order":{"type":"string","default":"","enum":["","asc","desc"]},"team":{"type":"integer","default":0},"sort":{"type":"string","default":""},"extend":{"type":"string","default":"","enum":["","0","1"]},"form":{"type":"string","default":"","enum":["","auto","yes","no"]},"extra":{"type":"string","default":"","enum":["","auto","yes","no"]},"diff":{"type":"string","default":"","enum":["","auto","yes","no"]},"sections":{"type":"string","default":""},"header":{"type":"string","default":"","enum":["","yes","no"]},"live":{"type":"string","default":"","enum":["","auto","no"]},"apply":{"type":"string","default":"","enum":["","auto","no"]}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"blyzer-events-block","style":"blyzer-events"}},"tagged_versions":["1.6.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3800127,"resolution":"1","location":"assets","locale":"","width":944,"height":453},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3800127,"resolution":"2","location":"assets","locale":"","width":944,"height":1391},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3800127,"resolution":"3","location":"assets","locale":"","width":944,"height":601},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3800127,"resolution":"4","location":"assets","locale":"","width":944,"height":911},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3800127,"resolution":"5","location":"assets","locale":"","width":944,"height":674},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3800127,"resolution":"6","location":"assets","locale":"","width":1000,"height":1359},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3800127,"resolution":"7","location":"assets","locale":"","width":1440,"height":1123},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3800127,"resolution":"8","location":"assets","locale":"","width":1440,"height":1000}},"screenshots":{"1":"Event header with status, key facts and a link to follow the event on Blyzer.net.","2":"Group standings with form, in the Blyzer.net dark style.","3":"Playoff bracket with the third-place match.","4":"Live, upcoming and latest matches with a link to the full schedule on Blyzer.net.","5":"Top players with statistics defined by the event.","6":"The light colour scheme \u2013 chosen automatically on light websites.","7":"Connecting an event: paste the key, check the connection and copy the shortcode.","8":"The \"Blyzer event\" block in the block editor."}},"plugin_section":[],"plugin_tags":[11108,5122,4776,30579,14116],"plugin_category":[37],"plugin_contributors":[292515],"plugin_business_model":[],"class_list":["post-401970","plugin","type-plugin","status-publish","hentry","plugin_tags-league","plugin_tags-results","plugin_tags-sports","plugin_tags-standings","plugin_tags-tournament","plugin_category-arts-and-entertainment","plugin_contributors-blyzernet","plugin_committers-blyzernet"],"banners":{"banner":"https:\/\/ps.w.org\/blyzer-events\/assets\/banner-772x250.png?rev=3800127","banner_2x":"https:\/\/ps.w.org\/blyzer-events\/assets\/banner-1544x500.png?rev=3800127","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/blyzer-events\/assets\/icon.svg?rev=3800127","icon":"https:\/\/ps.w.org\/blyzer-events\/assets\/icon.svg?rev=3800127","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/blyzer-events\/assets\/screenshot-1.png?rev=3800127","caption":"Event header with status, key facts and a link to follow the event on Blyzer.net."},{"src":"https:\/\/ps.w.org\/blyzer-events\/assets\/screenshot-2.png?rev=3800127","caption":"Group standings with form, in the Blyzer.net dark style."},{"src":"https:\/\/ps.w.org\/blyzer-events\/assets\/screenshot-3.png?rev=3800127","caption":"Playoff bracket with the third-place match."},{"src":"https:\/\/ps.w.org\/blyzer-events\/assets\/screenshot-4.png?rev=3800127","caption":"Live, upcoming and latest matches with a link to the full schedule on Blyzer.net."},{"src":"https:\/\/ps.w.org\/blyzer-events\/assets\/screenshot-5.png?rev=3800127","caption":"Top players with statistics defined by the event."},{"src":"https:\/\/ps.w.org\/blyzer-events\/assets\/screenshot-6.png?rev=3800127","caption":"The light colour scheme \u2013 chosen automatically on light websites."},{"src":"https:\/\/ps.w.org\/blyzer-events\/assets\/screenshot-7.png?rev=3800127","caption":"Connecting an event: paste the key, check the connection and copy the shortcode."},{"src":"https:\/\/ps.w.org\/blyzer-events\/assets\/screenshot-8.png?rev=3800127","caption":"The \"Blyzer event\" block in the block editor."}],"raw_content":"<!--section=description-->\n<p><a href=\"https:\/\/www.blyzer.net\/\">Blyzer.net<\/a> is a platform for organising sports and e-sports tournaments, leagues and races \u2013 registrations, schedule, results, tables and statistics in one place.<\/p>\n\n<p>Blyzer Events connects your WordPress site to your Blyzer.net events. Add an event, paste its API key and place the \u201cBlyzer event\u201d block, the Elementor widget or a shortcode anywhere on your site. Results update automatically as the organiser enters them on Blyzer.net \u2013 while the event is in progress even without reloading the page.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Easy to set up \u2013 a 3-step guide, a connection check right after you paste the key and a preview of the whole event<\/li>\n<li>\u201cBlyzer event\u201d block for the block editor and a \u201cBlyzer event\u201d widget for Elementor \u2013 choose the event and what to show, no shortcodes needed<\/li>\n<li>Live updates \u2013 while the event is in progress the results on the page refresh by themselves (every 60 seconds by default), only when the browser tab is visible<\/li>\n<li>Countdown to the start of the event and a \u201cRegister a team\u201d button while registration is open<\/li>\n<li>Event info \u2013 logo, name, sport, status with a LIVE indicator, dates, venue and counts<\/li>\n<li>Whole event on one page with tabs \u2013 shows only the sections that have data<\/li>\n<li>Groups \u2013 standings tables like on Blyzer.net (played, wins, draws, losses, overtime results, score, goal difference, points, form)<\/li>\n<li>Playoff \u2013 a real bracket with connecting lines, highlighted winners, byes and teams not yet known; double elimination (winners, losers, grand final) and additional playoff are shown separately<\/li>\n<li>Matches \u2013 schedule and results grouped by round, group, playoff round or day, with live score, final and upcoming states<\/li>\n<li>Teams \u2013 a grid of team cards with logos (or initials when there is no logo)<\/li>\n<li>Players \u2013 statistics with the columns your event uses (goals, assists, cards \u2026)<\/li>\n<li>Races \u2013 stage results and overall standings including DNS \/ DNF \/ DSQ<\/li>\n<li>Always looks like Blyzer.net \u2013 Blyzer colours, hexagon crests and the Rajdhani font bundled with the plugin (no requests to Google); dark by default, light or automatic on request<\/li>\n<li>Sends your visitors to Blyzer.net for more \u2013 the next and last matches with a \u201cFull schedule on Blyzer.net\u201d button, top 10 players with \u201cAll statistics on Blyzer.net\u201d, every match, team and the event link to its page on Blyzer.net (opens in a new tab)<\/li>\n<li>Optional small \u201cResults from Blyzer.net\u201d logo under each widget (off by default)<\/li>\n<li>Works in any theme \u2013 styles are isolated, tables scroll on phones with a sticky team column, no jQuery<\/li>\n<li>Fast and robust \u2013 data is cached; when Blyzer.net is not reachable the last loaded data is shown and the site does not slow down<\/li>\n<li>Your own HTML templates \u2013 globally or per event \u2013 with a simple <code>{{placeholder}}<\/code> syntax<\/li>\n<li>Translation ready (Slovak translation included)<\/li>\n<\/ul>\n\n<h4>Shortcodes<\/h4>\n\n<p>Replace <code>123<\/code> with the ID of the event (shown in the \u201cAvailable shortcodes\u201d box when editing the event).<\/p>\n\n<ul>\n<li><code>[blyzer_tournament id=\"123\"]<\/code> \u2013 the whole event with tabs<\/li>\n<li><code>[blyzer_event id=\"123\"]<\/code> \u2013 event info<\/li>\n<li><code>[blyzer_groups id=\"123\"]<\/code><\/li>\n<li><code>[blyzer_playoff_rounds id=\"123\"]<\/code><\/li>\n<li><code>[blyzer_matches id=\"123\"]<\/code><\/li>\n<li><code>[blyzer_teams id=\"123\"]<\/code><\/li>\n<li><code>[blyzer_players id=\"123\"]<\/code><\/li>\n<li><code>[blyzer_race_stages id=\"123\"]<\/code><\/li>\n<li><code>[blyzer_race_standings id=\"123\"]<\/code><\/li>\n<\/ul>\n\n<p>Optional attributes:<\/p>\n\n<ul>\n<li><code>theme=\"dark\"<\/code>, <code>theme=\"light\"<\/code> or <code>theme=\"auto\"<\/code> \u2013 colour scheme (all shortcodes, default from the settings, dark unless changed)<\/li>\n<li><code>limit=\"10\"<\/code> \u2013 show only the first N items; <code>blyzer_players<\/code> shows the top 10 by default, <code>limit=\"0\"<\/code> shows all players<\/li>\n<li><code>upcoming=\"3\"<\/code> and <code>recent=\"3\"<\/code> \u2013 <code>blyzer_matches<\/code> shows all live matches, the next 3 and the last 3 by default; <code>upcoming=\"all\"<\/code> (or <code>limit<\/code>, or <code>status<\/code>) shows the full schedule as before<\/li>\n<li><code>group=\"A\"<\/code> \u2013 only the given group (<code>blyzer_matches<\/code>, <code>blyzer_groups<\/code>)<\/li>\n<li><code>status=\"played\"<\/code>, <code>status=\"upcoming\"<\/code> or <code>status=\"live\"<\/code> \u2013 filter matches (<code>blyzer_matches<\/code>)<\/li>\n<li><code>phase=\"groups\"<\/code>, <code>phase=\"playoff\"<\/code> or <code>phase=\"friendly\"<\/code> \u2013 filter matches by phase (<code>blyzer_matches<\/code>)<\/li>\n<li><code>team=\"45\"<\/code> \u2013 only matches or players of the team with this Blyzer ID (<code>blyzer_matches<\/code>, <code>blyzer_players<\/code>)<\/li>\n<li><code>group_by=\"round\"<\/code>, <code>\"group\"<\/code>, <code>\"day\"<\/code> or <code>\"none\"<\/code> \u2013 how matches are grouped; by default a league is grouped by round and a tournament by group and playoff round (<code>blyzer_matches<\/code>)<\/li>\n<li><code>order=\"desc\"<\/code> \u2013 newest matches first (<code>blyzer_matches<\/code>)<\/li>\n<li><code>form=\"yes|no\"<\/code>, <code>extra=\"yes|no\"<\/code>, <code>diff=\"yes|no\"<\/code> \u2013 show or hide the form, overtime and goal difference columns; by default they are shown when the data has them (<code>blyzer_groups<\/code>)<\/li>\n<li><code>extend=\"0\"<\/code> or <code>extend=\"1\"<\/code> \u2013 only the main or only the additional groups \/ playoff (<code>blyzer_groups<\/code>, <code>blyzer_playoff_rounds<\/code>)<\/li>\n<li><code>sort=\"sum\"<\/code>, <code>sort=\"name\"<\/code> or the label of a statistic, e.g. <code>sort=\"g\"<\/code> \u2013 order players (<code>blyzer_players<\/code>)<\/li>\n<li><code>sections=\"groups,playoff,matches\"<\/code> \u2013 which tabs to show (<code>blyzer_tournament<\/code>; also <code>extra<\/code>, <code>teams<\/code>, <code>players<\/code>, <code>standings<\/code>, <code>stages<\/code>)<\/li>\n<li><code>header=\"no\"<\/code> \u2013 hide the event info above the tabs (<code>blyzer_tournament<\/code>)<\/li>\n<li><code>live=\"no\"<\/code> \u2013 do not refresh this shortcode automatically while the event is in progress (all shortcodes)<\/li>\n<li><code>apply=\"no\"<\/code> \u2013 hide the \u201cRegister a team\u201d button (<code>blyzer_event<\/code>, <code>blyzer_tournament<\/code>)<\/li>\n<\/ul>\n\n<h4>Block and Elementor widget<\/h4>\n\n<p>In the block editor add the \u201cBlyzer event\u201d block, in Elementor the \u201cBlyzer event\u201d widget. Choose the event (\u2713 means the connection works, \u26a0 means the API key needs checking), what to show and optional settings. They show exactly the same as the shortcodes.<\/p>\n\n<h4>Live updates<\/h4>\n\n<p>When an event is in progress (Blyzer.net marks it as live, or a match is live), the results on the page refresh automatically. The page asks your own WordPress site for the new results, never Blyzer.net directly, and only while the browser tab is visible. The interval (60 seconds by default, at least 30) and turning it off for the whole site are in Blyzer Events \u2192 Settings; a single shortcode can turn it off with <code>live=\"no\"<\/code>.<\/p>\n\n<p>Examples \u2013 top 10 scorers: <code>[blyzer_players id=\"123\" sort=\"g\" limit=\"10\"]<\/code>, next five matches: <code>[blyzer_matches id=\"123\" status=\"upcoming\" limit=\"5\" group_by=\"none\"]<\/code><\/p>\n\n<h4>Templates<\/h4>\n\n<p>Every shortcode (except <code>blyzer_tournament<\/code>) uses a built-in template unless you set your own in Blyzer Events \u2192 Settings \u2192 Templates, or for a single event in the event editor.<\/p>\n\n<ul>\n<li><code>{{title}}<\/code> \u2013 prints a value (HTML is escaped)<\/li>\n<li><code>{{totalStatistics.g}}<\/code> \u2013 prints a nested value<\/li>\n<li><code>{{#items}} \u2026 {{\/items}}<\/code> \u2013 repeats the block for every item; for non-list values shows the block when the value is not empty<\/li>\n<li><code>{{^items}} \u2026 {{\/items}}<\/code> \u2013 shows the block when the value is empty<\/li>\n<li><code>{{@index}}<\/code> \u2013 order of the item in a list, starting at 1<\/li>\n<li><code>{{count}}<\/code> \u2013 number of items<\/li>\n<\/ul>\n\n<p>Besides the fields from Blyzer.net the plugin adds ready-made fields, so templates need no logic \u2013 for example <code>statusLabel<\/code>, <code>isLive<\/code>, <code>isWinnerHome<\/code>, <code>home.name<\/code>, <code>initials<\/code>, <code>playedAtDate<\/code>, <code>diffLabel<\/code> or <code>formItems<\/code>. The full list for each shortcode is shown next to the template editor.<\/p>\n\n<h4>Styling<\/h4>\n\n<p>The widgets always use the Blyzer.net look (colours, hexagons, the Rajdhani font). Developers can still adjust details with CSS custom properties on <code>.blyzer-events<\/code>, for example <code>--blyzer-surface<\/code>, <code>--blyzer-text<\/code>, <code>--blyzer-border<\/code>, <code>--blyzer-radius<\/code> or <code>--blyzer-font<\/code>. All built-in elements use classes starting with <code>bze-<\/code>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Blyzer.net API to load the data of your events. Without it the plugin cannot display anything.<\/p>\n\n<ul>\n<li>Service: Blyzer.net API, operated by the Blyzer.net platform. Endpoints: <code>https:\/\/www.blyzer.net\/api\/event\/all<\/code> (all data of the event in one request, used first). When it is not available (HTTP 404), the plugin remembers that for a day and uses up to eight requests instead: <code>https:\/\/www.blyzer.net\/api\/event<\/code>, <code>\/api\/event\/teams<\/code>, <code>\/api\/event\/groups<\/code>, <code>\/api\/event\/playoff-rounds<\/code>, <code>\/api\/event\/matches<\/code>, <code>\/api\/event\/players<\/code>, <code>\/api\/event\/race-stages<\/code> and <code>\/api\/event\/race-standings<\/code>.<\/li>\n<li>What is sent: the API key of the event you entered in the event editor, in the <code>X-Auth-Token<\/code> HTTP header, and the standard technical headers of an HTTP request. The User-Agent is <code>BlyzerEvents\/&lt;version&gt;; WordPress<\/code> \u2013 it does not contain the address of your site. As with any internet request, Blyzer.net sees the IP address of your web server. No data about your site visitors is sent. The key is never shown on your site, in the block or in any response of your site.<\/li>\n<li>When: from your server, when a page with a Blyzer block, widget or shortcode is displayed (or refreshed during a live event) and the cached data has expired \u2013 at most one request per event per cache period, no matter how many visitors there are. With the cache duration set to 0 a request is made on every page view (live updates still use at least a 10-second cache). Also when an event is saved or opened in the editor (connection check) and when you click \u201cVerify API\u201d in the list of events. When Blyzer.net asks the plugin to slow down (HTTP 429 with Retry-After) no requests are sent for that time.<\/li>\n<li>Terms of service: https:\/\/www.blyzer.net\/sk\/obchodne-podmienky<\/li>\n<li>Privacy policy: https:\/\/www.blyzer.net\/sk\/ochrana-osobnych-udajov<\/li>\n<\/ul>\n\n<p>Stream links from the API are shown only when they point to YouTube, Twitch or Facebook (https). All other links point only to www.blyzer.net, blyzer.net or cdn.www.blyzer.net.<\/p>\n\n<p>The Rajdhani font and the Blyzer.net logo are bundled with the plugin and loaded from your own site \u2013 no request goes to Google Fonts or to Blyzer.net for them.<\/p>\n\n<p>Images (event and team logos, player photos, flags, sport icons) returned by the API are loaded by the visitor\u2019s browser directly from Blyzer.net servers (<code>https:\/\/cdn.www.blyzer.net<\/code> and other blyzer.net subdomains), so the visitor\u2019s IP address and browser information reach those servers. Only HTTPS addresses on blyzer.net and its subdomains are used. Live updates are loaded by the visitor\u2019s browser from your own site (<code>\/wp-json\/blyzer-events\/v1\/render<\/code>), not from Blyzer.net.<\/p>\n\n<h3>Credits<\/h3>\n\n<ul>\n<li>Rajdhani font by Indian Type Foundry, licensed under the SIL Open Font License 1.1 (<code>assets\/fonts\/OFL.txt<\/code>). Bundled as a Latin subset in WOFF2.<\/li>\n<li>Blyzer.net logo and name are trademarks of Blyzer.net, the author of this plugin.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin from Plugins \u2192 Add New, or upload the <code>blyzer-events<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>On Blyzer.net open your event \u2192 Detailed settings \u2192 API keys \u2192 \u201c+\u201d and copy the key.<\/li>\n<li>In WordPress go to Blyzer Events \u2192 Add New, paste the key and publish (the name is filled in from Blyzer.net when you leave it empty). The editor shows whether the connection works and offers a preview.<\/li>\n<li>Add the \u201cBlyzer event\u201d block (or the Elementor widget) to any page and choose the event \u2013 or copy a shortcode from the \u201cAvailable shortcodes\u201d box.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20find%20the%20api%20key%3F\"><h3>Where do I find the API key?<\/h3><\/dt>\n<dd><p>On Blyzer.net open your event \u2192 Detailed settings \u2192 API keys \u2192 \u201c+\u201d. You need to be the organiser of the event.<\/p><\/dd>\n<dt id=\"the%20shortcode%20shows%20nothing%20%2F%20%E2%80%9Cno%20data%20yet.%E2%80%9D\"><h3>The shortcode shows nothing \/ \u201cNo data yet.\u201d<\/h3><\/dt>\n<dd><p>Check the \u201cAPI status\u201d column in Blyzer Events. 200 means the key works, any other code means Blyzer.net did not accept the request. The column shows the last known result; click \u201cVerify API\u201d to check it again. Make sure the event in WordPress is published \u2013 unpublished events show the message from the settings instead.<\/p><\/dd>\n<dt id=\"how%20often%20is%20the%20data%20refreshed%3F\"><h3>How often is the data refreshed?<\/h3><\/dt>\n<dd><p>By default every 300 seconds. You can change it in Blyzer Events \u2192 Settings. 0 disables caching (not recommended on busy sites). Saving an event clears its cache immediately.<\/p><\/dd>\n<dt id=\"can%20i%20change%20how%20it%20looks%3F\"><h3>Can I change how it looks?<\/h3><\/dt>\n<dd><p>The widgets are meant to look like Blyzer.net, so the colours and the font are fixed. You can choose the dark (default), light or automatic colour scheme in Blyzer Events \u2192 Settings or per shortcode, developers can override the CSS custom properties (see Styling), and you can write your own HTML templates. Custom templates made for version 1.4 keep working and keep their look; the accent colour setting was removed in 1.6.0.<\/p><\/dd>\n<dt id=\"why%20do%20the%20widgets%20link%20to%20blyzer.net%3F\"><h3>Why do the widgets link to Blyzer.net?<\/h3><\/dt>\n<dd><p>The plugin is a window to your event, Blyzer.net is the place with everything else. Matches show the nearest and latest ones and players the top 10, with buttons to the full schedule and statistics on Blyzer.net. Every link is part of the content (the event, a match, a team or a player) and opens in a new tab. The \u201cResults from Blyzer.net\u201d logo is optional and off by default \u2013 you can turn it on in Blyzer Events \u2192 Settings.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20blyzer.net%20is%20down%3F\"><h3>What happens when Blyzer.net is down?<\/h3><\/dt>\n<dd><p>The plugin waits at most 8 seconds once, then shows the last successfully loaded data and does not try again for a minute, so your pages stay fast. When Blyzer.net answers \u201ctoo many requests\u201d, the plugin waits as long as Blyzer.net asks (at most 10 minutes) and shows the last loaded data meanwhile. Live updates on open pages simply wait longer and try again.<\/p><\/dd>\n<dt id=\"how%20do%20live%20updates%20work%20and%20do%20they%20slow%20down%20my%20site%3F\"><h3>How do live updates work and do they slow down my site?<\/h3><\/dt>\n<dd><p>Only widgets of an event that is in progress refresh, every 60 seconds by default plus a small random delay, and only while the browser tab is visible. The browser asks your site, which answers from a short cache, so even many visitors cause at most one request to Blyzer.net per event per cache period. Refresh requests that would need new data from Blyzer.net are limited to 60 per minute per IP address (IPv6 per \/64 network); answers from the cache are not limited (with a persistent object cache, up to 600 per minute). You can change the interval or turn live updates off in Blyzer Events \u2192 Settings, or for one shortcode with <code>live=\"no\"<\/code>.<\/p><\/dd>\n<dt id=\"my%20site%20is%20behind%20cloudflare%20or%20another%20proxy%20%2F%20cdn\"><h3>My site is behind Cloudflare or another proxy \/ CDN<\/h3><\/dt>\n<dd><p>The plugin takes the visitor\u2019s IP address only from <code>REMOTE_ADDR<\/code>, because other headers can be faked. Behind a CDN or reverse proxy all visitors may share the proxy\u2019s address and share the limit. If your server knows the real address, return it with the <code>blyzer_events_client_ip<\/code> filter, for example:<\/p>\n\n<pre><code>add_filter( 'blyzer_events_client_ip', function ( $ip ) { return $_SERVER['HTTP_CF_CONNECTING_IP'] ?? $ip; } );\n<\/code><\/pre>\n\n<p>Only do this when the proxy always sets the header, otherwise visitors could fake it. The limits can be changed with the <code>blyzer_events_rest_rate_limit<\/code> and <code>blyzer_events_rest_rate_limit_cached<\/code> filters.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20caching%20plugins%3F\"><h3>Does it work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. Pages can be cached as usual; live updates are loaded through the WordPress REST API, which page caches do not store. If a security plugin blocks the REST API for visitors, live updates are silently skipped and the page still shows the results from the time it was loaded.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data when I delete the plugin?<\/h3><\/dt>\n<dd><p>Events and settings are deleted, unless you tick \u201cKeep data on uninstall\u201d in the settings. Deactivating the plugin never deletes anything.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>New: always looks like Blyzer.net \u2013 Blyzer colours, hexagon crests and the bundled Rajdhani font; dark colour scheme by default. The accent colour setting was removed.<\/li>\n<li>New: matches show live matches, the next 3 and the last 3 with a \u201cFull schedule on Blyzer.net\u201d button (<code>upcoming<\/code>, <code>recent<\/code>; <code>upcoming=\"all\"<\/code> for everything); players show the top 10 with \u201cAll statistics on Blyzer.net\u201d; every match row, team and player links to Blyzer.net in a new tab; \u201cWatch live\u201d label on live matches; \u201cFollow on Blyzer.net\u201d button in the event header.<\/li>\n<li>New: optional \u201cResults from Blyzer.net\u201d logo under each widget (off by default, Settings or the setup guide).<\/li>\n<li>New: stream links to YouTube, Twitch and Facebook are allowed.<\/li>\n<li>New: \u201cBlyzer event\u201d block for the block editor with a live preview, and a \u201cBlyzer event\u201d widget for Elementor (only loaded when Elementor is active).<\/li>\n<li>New: live updates \u2013 while an event is in progress the results refresh without reloading the page, only when the tab is visible, with a random delay and a longer pause after errors; the active tab and scroll position are kept. Setting for the interval (default 60 s, minimum 30 s) and to turn it off, shortcode attribute <code>live=\"no\"<\/code>.<\/li>\n<li>New: countdown to the start of the event and a \u201cRegister a team\u201d button while registration is open (<code>apply=\"no\"<\/code> hides it).<\/li>\n<li>New: a 3-step guide for new users, a connection check with a clear message right after the key is saved, a preview of the whole event, and the event name is filled in from Blyzer.net.<\/li>\n<li>Improved: all data of an event is loaded with one request (<code>\/api\/event\/all<\/code>) and shared by all widgets on the page; falls back to the separate endpoints when it is not available.<\/li>\n<li>Improved: when Blyzer.net answers HTTP 429 the plugin respects Retry-After (at most 10 minutes) and shows the last loaded data; only one request per event is made at a time.<\/li>\n<li>Security: the live update endpoint is read-only, validates every parameter against an allow-list, returns only what the public shortcode shows, caches the result in memory (not in the database) and limits requests that need new data per IP address.<\/li>\n<li>Security: events use their own capabilities (<code>edit_blyzer_events<\/code> \u2026), given to administrators on activation and update; filter <code>blyzer_events_capability_roles<\/code>.<\/li>\n<li>Security: links from Blyzer.net data may point only to www.blyzer.net, blyzer.net and cdn.www.blyzer.net; requests do not send the site address in the User-Agent and refuse compressed responses.<\/li>\n<li>Improved: uninstalling removes events in every status, all cached data and the capabilities.<\/li>\n<li>Requires WordPress 6.3 or newer.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>New: completely redesigned built-in templates in the Blyzer.net style \u2013 light, dark and automatic colour scheme (<code>theme<\/code> attribute and setting), accent colour setting.<\/li>\n<li>New: <code>[blyzer_tournament]<\/code> \u2013 the whole event with tabs, shows only sections with data; works without JavaScript.<\/li>\n<li>New: <code>[blyzer_event]<\/code> \u2013 event info with logo, sport, status, LIVE indicator, dates, venue and counts.<\/li>\n<li>New: <code>[blyzer_race_stages]<\/code> and <code>[blyzer_race_standings]<\/code> for races, including DNS \/ DNF \/ DSQ.<\/li>\n<li>New: playoff bracket with connecting lines, winners, byes, double elimination and additional playoff; swipeable rounds on phones.<\/li>\n<li>New: matches grouped by round, group or day (<code>group_by<\/code>), live \/ final \/ upcoming state, new filters <code>phase<\/code>, <code>team<\/code>, <code>order<\/code>, <code>status=\"live\"<\/code>.<\/li>\n<li>New: standings with played, overtime, goal difference and form columns (<code>form<\/code>, <code>extra<\/code>, <code>diff<\/code>), sticky team column on phones.<\/li>\n<li>New: player statistics columns follow the statistics of the event.<\/li>\n<li>New: many ready-made template fields (<code>statusLabel<\/code>, <code>isWinnerHome<\/code>, <code>home.name<\/code>, <code>initials<\/code> \u2026); dates use the site time zone and formats.<\/li>\n<li>Improved: when Blyzer.net is not reachable the last loaded data is shown, errors are remembered for 60 seconds and requests time out after 8 seconds.<\/li>\n<li>Improved: the list of events no longer contacts Blyzer.net; API status is updated when data is loaded or when you click \u201cVerify API\u201d.<\/li>\n<li>Security: only HTTPS images and links from blyzer.net are used, built-in templates use a strict HTML allow-list, the API key field is hidden and validated, shortcode attributes are validated, responses are limited to 5 MB.<\/li>\n<li>Styles are isolated from the theme; styles and scripts load only on pages with a shortcode.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>New: built-in templates for all shortcodes, so they work without writing any HTML.<\/li>\n<li>New: shortcode attributes <code>limit<\/code>, <code>group<\/code>, <code>status<\/code> and <code>sort<\/code>.<\/li>\n<li>New: templates support nested values (<code>{{totalStatistics.g}}<\/code>), empty blocks (<code>{{^items}}<\/code>) and <code>{{@index}}<\/code>.<\/li>\n<li>New: formatted match date and time (<code>{{playedAtDate}}<\/code>, <code>{{playedAtTime}}<\/code>) using the site date and time format.<\/li>\n<li>New: Settings link on the Plugins screen.<\/li>\n<li>Fix: a fatal error when data was loaded from the cache.<\/li>\n<li>Fix: deactivating the plugin no longer deletes events and settings.<\/li>\n<li>Fix: a fatal error when deleting the plugin.<\/li>\n<li>Fix: saving one settings tab no longer erases the other.<\/li>\n<li>Fix: bulk editing events no longer resets custom templates.<\/li>\n<li>Fix: PHP warning when the API returned no data.<\/li>\n<li>Security: API requests use HTTPS, templates and settings are sanitized, all output is escaped, nonce and capability checks on save.<\/li>\n<li>Plugin is now in English with a Slovak translation.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>First version.<\/li>\n<\/ul>","raw_excerpt":"Show your Blyzer.net tournaments, leagues and races on your site \u2013 event info, standings, playoff bracket, matches, players and race results.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/401970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=401970"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/blyzernet"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=401970"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=401970"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=401970"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=401970"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=401970"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=401970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}