{"id":336835,"date":"2026-07-18T06:42:13","date_gmt":"2026-07-18T06:42:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ibpsports-football-manager\/"},"modified":"2026-08-28T08:14:10","modified_gmt":"2026-08-28T08:14:10","slug":"ibpsports-football-studio","status":"publish","type":"plugin","link":"https:\/\/szl.wordpress.org\/plugins\/ibpsports-football-studio\/","author":23521738,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1","requires":"6.2","requires_php":"7.0","requires_plugins":null,"header_name":"IBPSports Football Studio","header_author":"IBPSports","header_description":"Advanced management system for your football(soccer) club, competition, league or news website. Manage players, teams, games, tournaments, standings and playoffs.","assets_banners_color":"d90f2a","last_updated":"2026-08-28 08:14:10","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/football.ibpsports.net","header_author_uri":"https:\/\/football.ibpsports.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":258,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"ibpsports","date":"2026-08-20 07:12:08","revision":3656086},"1.0.2":{"tag":"1.0.2","author":"ibpsports","date":"2026-08-26 14:13:59","revision":3667222},"1.0.3":{"tag":"1.0.3","author":"ibpsports","date":"2026-08-28 08:14:10","revision":3670010}},"upgrade_notice":{"1.0.1":"<ul>\n<li>added Spanish (es_ES) and French (fr_FR) language files<\/li>\n<li>Stadium shortcode \u2013 moved the About section into its own block for a cleaner layout<\/li>\n<li>Admin Schedule Matches page \u2013 fixed Home team, Away team, and Stadium dropdowns not opening<\/li>\n<li>Frontend styles \u2013 minor UI tweaks to the shortcode output<\/li>\n<li>Admin Match Events - fixed the &quot;Create&quot; button in the Add New player quick-add form doing nothing<\/li>\n<li>Player shortcode Season totals - fixed Matches Played missing appearances with no event; starting eleven appearances are now counted from the lineups<\/li>\n<li>Player shortcode Recent matches - matches started by the player with no recorded event are now listed<\/li>\n<\/ul>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3612272,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3612508,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3614219,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.2","1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3612508,"resolution":"1","location":"assets","locale":"","width":1273,"height":1058},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3612508,"resolution":"10","location":"assets","locale":"","width":1272,"height":1112},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3612508,"resolution":"2","location":"assets","locale":"","width":1273,"height":922},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3612508,"resolution":"3","location":"assets","locale":"","width":1266,"height":797},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3612508,"resolution":"4","location":"assets","locale":"","width":1258,"height":1017},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3612508,"resolution":"5","location":"assets","locale":"","width":670,"height":1068},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3612508,"resolution":"6","location":"assets","locale":"","width":1320,"height":596},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3612508,"resolution":"7","location":"assets","locale":"","width":336,"height":938},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3612508,"resolution":"8","location":"assets","locale":"","width":886,"height":1226},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3612508,"resolution":"9","location":"assets","locale":"","width":933,"height":1106}},"screenshots":{"1":"Admin Page - Tournament Dashboard.","2":"Admin Page - Insert Results.","3":"Admin Page - Schedule Matches.","4":"Admin Page - Add\/Edit Team.","5":"Shortcode - Team profile.","6":"Shortcode - Player profile.","7":"Shortcode - Match Page.","8":"Admin Page - Add\/Edit Tournament.","9":"Admin Page - Add\/Edit Match (General).","10":"Admin Page - Add\/Edit Match Events."}},"plugin_section":[262246],"plugin_tags":[1238,11108,1239,30579,14116],"plugin_category":[37],"plugin_contributors":[272141],"plugin_business_model":[],"class_list":["post-336835","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-football","plugin_tags-league","plugin_tags-soccer","plugin_tags-standings","plugin_tags-tournament","plugin_category-arts-and-entertainment","plugin_contributors-ibpsports","plugin_committers-ibpsports"],"banners":{"banner":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/banner-772x250.jpg?rev=3614219","banner_2x":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/banner-1544x500.png?rev=3612508","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/icon-128x128.png?rev=3612272","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/screenshot-1.png?rev=3612508","caption":"Admin Page - Tournament Dashboard."},{"src":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/screenshot-2.png?rev=3612508","caption":"Admin Page - Insert Results."},{"src":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/screenshot-3.png?rev=3612508","caption":"Admin Page - Schedule Matches."},{"src":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/screenshot-4.png?rev=3612508","caption":"Admin Page - Add\/Edit Team."},{"src":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/screenshot-5.png?rev=3612508","caption":"Shortcode - Team profile."},{"src":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/screenshot-6.png?rev=3612508","caption":"Shortcode - Player profile."},{"src":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/screenshot-7.png?rev=3612508","caption":"Shortcode - Match Page."},{"src":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/screenshot-8.png?rev=3612508","caption":"Admin Page - Add\/Edit Tournament."},{"src":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/screenshot-9.png?rev=3612508","caption":"Admin Page - Add\/Edit Match (General)."},{"src":"https:\/\/ps.w.org\/ibpsports-football-studio\/assets\/screenshot-10.png?rev=3612508","caption":"Admin Page - Add\/Edit Match Events."}],"raw_content":"<!--section=description-->\n<p>Football Studio by IBPSports turns WordPress into a complete football (soccer) competition platform. Build and run leagues, cups and tournaments, manage clubs, players and staff, record matches with full event detail, and publish automatically-calculated standings and knockout brackets \u2014 all from one plugin, with no monthly fees and no external services.<\/p>\n\n<p>Everything is stored in dedicated, indexed custom database tables rather than as post meta, so it stays fast and portable even with thousands of matches.<\/p>\n\n<h4>Why Football Studio by IBPSports?<\/h4>\n\n<ul>\n<li><strong>Truly complete and free.<\/strong> Unlimited leagues, seasons, tournaments, teams, players and matches \u2014 no caps, no \"demo\" limits.<\/li>\n<li><strong>Automatic standings.<\/strong> Tables recalculate themselves from results, with configurable ranking rules (points, goal difference, goals scored, head-to-head, wins, win %, points per game and more).<\/li>\n<li><strong>Both formats, properly modelled.<\/strong> Round-robin groups <em>and<\/em> knockout rounds\/brackets, including two-legged ties, byes, seeding and automatic winner progression.<\/li>\n<li><strong>Rich match data.<\/strong> Goals, own goals, penalties, yellow\/red cards, substitutions, lineups (starting XI + bench + coach), per-team match statistics and a written match report.<\/li>\n<li><strong>User-Friendly Interface.<\/strong> Intuitive dashboard for easy management and customization.<\/li>\n<li><strong>Self-contained frontend.<\/strong> Output is rendered through shortcodes and theme-overridable templates, so it works with any theme and never depends on a page builder.<\/li>\n<li><strong>Performance-first architecture.<\/strong> Custom tables, bulk queries and CSS container queries for responsive widgets without bloat.<\/li>\n<li><strong>Developer-friendly.<\/strong> Clean <code>ibps_football\/*<\/code> filters for league types, ranking criteria, standing\/stat columns, positions and more; templates you can override from your theme.<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<p><strong>Leagues &amp; Seasons<\/strong>\n* Unlimited leagues with type (domestic league, domestic cup, international, national, friendly) and country\n* Unlimited seasons with date ranges and an active-season concept\n* Dedicated League and Season pages listing all their tournaments<\/p>\n\n<p><strong>Tournaments<\/strong>\n* Create tournaments per league + season\n* Multiple stages, each round-robin (groups) or knockout (rounds)\n* Per-tournament ranking rules and points rules\n* Tournament hub page: standings, matches, participating teams and top player stats<\/p>\n\n<p><strong>Teams &amp; Players<\/strong>\n* Team profiles: logo, colours, country, city, stadium, coach, founding year and description\n* Player profiles: position, nationality, date of birth, shirt number, photo and bio\n* Season-specific squad\/roster management\n* Staff (coaches\/officials) and referees with their own profiles and match records\n* Stadiums\/venues with capacity, location map and matches hosted<\/p>\n\n<p><strong>Matches &amp; Scheduling<\/strong>\n* Schedule matches in round-robin and knockout formats\n* Full result detail: half-time, full-time, extra time and penalty shoot-outs\n* Match events: goals, own goals, penalties, cards and substitutions\n* Lineups: starting XI, bench and coach, with per-player event badges\n* Side-by-side team match statistics and a written match report\n* Match status handling (scheduled, live, finished, awarded, postponed, cancelled)<\/p>\n\n<p><strong>Standings &amp; Brackets<\/strong>\n* Automatic standings updated from results, with form (W\/D\/L) run\n* Configurable, multi-criteria ranking with position legends\n* Knockout rounds and ties with automatic score recalculation and winner progression<\/p>\n\n<p><strong>Statistics<\/strong>\n* Ranked player statistics (goals, assists, cards, penalties and more)\n* Ranked team statistics\n* Per-team and per-player performance history<\/p>\n\n<p><strong>Tools &amp; UX<\/strong>\n* Data import for bulk setup\n* Built-in shortcode reference page (Football Settings \u2192 Shortcodes) documenting every shortcode and parameter\n* TinyMCE shortcode inserter\n* Country flags and ISO handling throughout<\/p>\n\n<h4>Shortcodes<\/h4>\n\n<p>Insert any of these with the editor button or by typing them:<\/p>\n\n<ul>\n<li><code>[ibpf-league]<\/code>, <code>[ibpf-season]<\/code> \u2014 league \/ season hubs<\/li>\n<li><code>[ibpf-tournament]<\/code>, <code>[ibpf-tournaments]<\/code> \u2014 tournament hub and directory<\/li>\n<li><code>[ibpf-standings]<\/code> \u2014 standings table<\/li>\n<li><code>[ibpf-team]<\/code>, <code>[ibpf-teams]<\/code> \u2014 team profile and team list<\/li>\n<li><code>[ibpf-player]<\/code>, <code>[ibpf-players-stats]<\/code> \u2014 player profile and ranked player stats<\/li>\n<li><code>[ibpf-teams-stats]<\/code> \u2014 ranked team stats<\/li>\n<li><code>[ibpf-match]<\/code> (+ <code>[ibpf-match-info]<\/code>, <code>[ibpf-match-events]<\/code>, <code>[ibpf-match-report]<\/code>, <code>[ibpf-match-lineup]<\/code>, <code>[ibpf-match-stats]<\/code>) \u2014 match page and standalone sections<\/li>\n<li><code>[ibpf-matches]<\/code> \u2014 fixtures \/ results \/ schedule \/ calendar<\/li>\n<li><code>[ibpf-referee]<\/code>, <code>[ibpf-staff]<\/code> \u2014 referee and staff pages<\/li>\n<li><code>[ibpf-venue]<\/code>, <code>[ibpf-venues]<\/code> \u2014 stadium page and list<\/li>\n<\/ul>\n\n<p>More details about each feature are available on the <a href=\"https:\/\/football.ibpsports.net\/\">IBP Sports Website<\/a>.<\/p>\n\n<h4>Available Languages<\/h4>\n\n<ul>\n<li>English \u2013 English ( en_US )<\/li>\n<li>Croatian \u2013 Hrvatski ( hr )<\/li>\n<li>Czech \u2013 \u010ce\u0161tina ( cs_CZ )<\/li>\n<li>Danish \u2013 Dansk ( da_DK )<\/li>\n<li>Dutch \u2013 Nederlands ( nl_NL )<\/li>\n<li>Finnish \u2013 Suomi ( fi )<\/li>\n<li>French \u2013 Fran\u00e7ais ( fr_FR )<\/li>\n<li>German \u2013 Deutsch ( de_DE )<\/li>\n<li>Hungarian \u2013 Magyar ( hu_HU )<\/li>\n<li>Italian \u2013 Italiano ( it_IT )<\/li>\n<li>Lithuanian \u2013 Lietuvi\u0173 ( lt_LT )<\/li>\n<li>Polish \u2013 Polski ( pl_PL )<\/li>\n<li>Portuguese (Brazil) \u2013 Portugu\u00eas do Brasil ( pt_BR )<\/li>\n<li>Portuguese (Portugal) \u2013 Portugu\u00eas ( pt_PT )<\/li>\n<li>Romanian \u2013 Rom\u00e2n\u0103 ( ro_RO )<\/li>\n<li>Slovak \u2013 Sloven\u010dina ( sk_SK )<\/li>\n<li>Spanish \u2013 Espa\u00f1ol ( es_ES )<\/li>\n<li>Swedish \u2013 Svenska ( sv_SE )<\/li>\n<li>Ukrainian \u2013 \u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430 ( uk )<\/li>\n<\/ul>\n\n<!--section=installation-->\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.2 or greater<\/li>\n<li>PHP 7.0 or greater<\/li>\n<li>MySQL 5.6 or greater<\/li>\n<\/ul>\n\n<h4>Steps<\/h4>\n\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via the WordPress plugin installer.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Navigate to <strong>Football Studio<\/strong> in the admin sidebar to begin setup.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"are%20there%20limits%20on%20the%20number%20of%20teams%2C%20players%2C%20or%20matches%3F\"><h3>Are there limits on the number of teams, players, or matches?<\/h3><\/dt>\n<dd><p>No. There are no limits in the free version.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20any%20theme%3F\"><h3>Does this work with any theme?<\/h3><\/dt>\n<dd><p>Yes. Frontend output uses shortcodes and templates that are independent of your active theme, and templates can be overridden from your theme.<\/p><\/dd>\n<dt id=\"where%20is%20data%20stored%3F\"><h3>Where is data stored?<\/h3><\/dt>\n<dd><p>All plugin data is stored in dedicated custom database tables (prefixed <code>ibpf_<\/code>) for performance and portability.<\/p><\/dd>\n<dt id=\"does%20it%20support%20both%20leagues%20and%20knockout%20cups%3F\"><h3>Does it support both leagues and knockout cups?<\/h3><\/dt>\n<dd><p>Yes. A tournament can have round-robin (group) stages, knockout (round) stages, or both, with automatic standings and bracket progression.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3 - 2026-08-28<\/h4>\n\n<ul>\n<li>added Croatian \u2013 Hrvatski ( hr ), Czech \u2013 \u010ce\u0161tina ( cs_CZ ), Danish \u2013 Dansk ( da_DK ), Finnish \u2013 Suomi ( fi ), Hungarian \u2013 Magyar ( hu_HU ), Lithuanian \u2013 Lietuvi\u0173 ( lt_LT ), Portuguese (Portugal) \u2013 Portugu\u00eas ( pt_PT ),Romanian \u2013 Rom\u00e2n\u0103 ( ro_RO ), Slovak \u2013 Sloven\u010dina ( sk_SK ),Swedish \u2013 Svenska ( sv_SE ) language files<\/li>\n<li>Match shortcode Events section and [ibpf-match-events] shortcode - the timeline now shows Kick-off, Half-time and Full-time markers around the events, plus an Extra-time marker after the 90th minute when the match went to extra time<\/li>\n<li>Teams Stats shortcode - goals, goals conceded, averages and clean sheets are now taken from the match score instead of requiring match events, cards and the advanced columns also read the Match Stats grid, the missing percentage columns were added, columns with no data behind them show a dash instead of 0, and a new awarded_score attribute sets the scoreline credited to awarded matches<\/li>\n<li>Frontend styles \u2013 minor UI tweaks to the shortcode output<\/li>\n<\/ul>\n\n<h4>1.0.2 - 2026-08-26<\/h4>\n\n<ul>\n<li>added German (de_DE), Italian (it_IT), Dutch (nl_NL), Polish (pl_PL), Portuguese-Brasil (pt_BR) and Ukrainian (uk) language files<\/li>\n<li>Match shortcode Lineups section and [ibpf-match-lineup] shortcode - the team coach is now shown as the last entry of each lineup card<\/li>\n<li>Minor UI improvements in Lineups section\/shortcode <\/li>\n<li>Match Events browse now use icons for displaying events <\/li>\n<li>Minor UI improvements in Match Header section - display stadium and referee <\/li>\n<li>The abbreviated name(short) of tournament is used where space is limited <\/li>\n<\/ul>\n\n<h4>1.0.1 - 2026-08-19<\/h4>\n\n<ul>\n<li>added Spanish (es_ES) and French (fr_FR) language files<\/li>\n<li>Stadium shortcode \u2013 moved the About section into its own block for a cleaner layout<\/li>\n<li>Admin Schedule Matches page \u2013 fixed Home team, Away team, and Stadium dropdowns not opening<\/li>\n<li>Frontend styles \u2013 minor UI tweaks to the shortcode output<\/li>\n<li>Admin Match Events - fixed the \"Create\" button in the Add New player quick-add form doing nothing<\/li>\n<li>Player shortcode Season totals - fixed Matches Played missing appearances with no event; starting eleven appearances are now counted from the lineups<\/li>\n<li>Player shortcode Recent matches - matches started by the player with no recorded event are now listed<\/li>\n<\/ul>\n\n<h4>1.0.0 - 2020-07-20<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<\/ul>","raw_excerpt":"Run football\/soccer leagues, cups and tournaments on WordPress: teams, players, matches, statistics, automatic standings and knockout brackets.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336835","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336835"}],"author":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ibpsports"}],"wp:attachment":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336835"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336835"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336835"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336835"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336835"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}