Home Documentation
v1.6.0 Documentation

Polla Mundial 2026 documentation.

Everything you need to install, configure and master the Laooz World Cup Predictor on your WordPress site — multilingual, theme-shielded, production-ready.

5 Minute Setup

Install, import matches with timezone, paste 4 shortcodes — done.

8 Languages Built In

es · en_US · pt_BR · pt_PT · it_IT · de_DE · fr_FR · nl_NL — switches with site language.

Works With Any Theme

Theme Shield isolates plugin styles inside .polla-laooz-root.

Table of contents

Installation

Method 1: WordPress Admin (Recommended)

1

Download the Plugin

After purchasing, download the laooz-world-cup-predictor.zip file from your purchase confirmation email or your account downloads page.

2

Upload via WordPress

Go to your WordPress admin panel and:

  • Navigate to Plugins → Add New
  • Click "Upload Plugin"
  • Select the downloaded zip file
  • Click "Install Now""Activate"
3

You're Done

A new Polla Mundial menu appears in the admin sidebar with Dashboard, Matches, Predictions, Importer, Settings and the new Shortcodes guide.

Server Requirements

  • • WordPress 5.0+ — WordPress 6.5+ recommended for the fastest .l10n.php translation format
  • • PHP 7.4+
  • • MySQL 5.6+

Shortcodes Reference

Four shortcodes power every front-end view. All parameters accept aliases — use whichever feels natural.

Pending Matches

[polla_partidos_pendientes]

Description: Lists matches available for predictions with the new pill-style score widget (+/− buttons, single-line layout, animated icon-only save button).

Parameters:

Param Type Default Description
cantidad aliases: limite, limit int -1 How many matches to display. -1 means all available.
fase string Filter by phase: fase-grupos, octavos, cuartos, semifinales, tercer-lugar, final

Examples:

[polla_partidos_pendientes]
[polla_partidos_pendientes cantidad="5"]
[polla_partidos_pendientes fase="octavos"]
[polla_partidos_pendientes cantidad="10" fase="fase-grupos"]

Screenshot placeholder — pill score widget on a single line with Home | Scores | Away | Save.

My Predictions Improved

[polla_partidos_pronosticados]
// alias:
[polla_mis_pronosticos]

Description: Shows all predictions made by the logged-in user — both pending and finished, sorted by date. The alias [polla_mis_pronosticos] is now fully functional.

Parameters:

Param Type Default Description
cantidad aliases: limite, limit int -1 Maximum number of predictions to render.

Examples:

[polla_mis_pronosticos]
[polla_partidos_pronosticados cantidad="20"]
[polla_partidos_pronosticados limite="10"]

Ranking Updated 1.6

[polla_ranking]

Description: Public leaderboard. With no parameters it lists every participant paginated 100 per page (perfect for big leagues). With limite="N" it switches to a Top N view with podium for the first three. Usernames link to their profile page.

Parameters:

Param Type Default Description
limite aliases: cantidad, limit int When set: Top N with podium. When omitted: full list paginated 100/page.

Examples:

[polla_ranking]                // every participant, paginated 100/page
[polla_ranking limite="10"]    // Top 10 with podium
[polla_ranking limite="3"]     // podium-only

Removed in 1.6: The "View Full Ranking" button is gone — the new pagination replaces it.

User Profile Improved

[polla_perfil_usuario]

Description: Full profile for a user — stats, accuracy, prediction history. With no parameters it falls back to the logged-in user (no more errors). It also reads ?polla_usuario=ID from the URL automatically (this is what ranking links use).

Parameters:

Param Type Default Description
usuario_id int Logged-in user WordPress user ID. URL param ?polla_usuario=ID takes precedence.

Examples:

[polla_perfil_usuario]                  // current logged-in user
[polla_perfil_usuario usuario_id="5"]   // specific user

Users with no predictions yet are handled gracefully — they see an empty state instead of a fatal error.

Use in PHP templates

<?php echo do_shortcode('[polla_ranking limite="10"]'); ?>

Tip: from the WordPress admin, go to Polla Mundial → Shortcodes for a built-in copy-paste guide with the same examples and a "Copy to clipboard" button.

Configuration Page New in 1.6

A dedicated Settings screen at Polla Mundial → Settings (built on the WordPress Settings API).

Profile Page assignment

Pick which page hosts [polla_perfil_usuario] from a dropdown. The plugin uses this value to build the profile URLs that the ranking links to. Behaviour:

  • If a page is explicitly assigned → that one wins.
  • If not → the plugin auto-detects via cache + slug/title fallbacks (legacy: "perfil", "mi-perfil", "profile").
  • You can override entirely from code with the polla_laooz_perfil_page_url filter (see "For Developers").

Closing time before kickoff

Configure how many minutes before kickoff predictions lock automatically.

  • Default: 15 minutes
  • Range: 0 – 120 minutes
  • Recommended: 10 – 30 minutes

Importer with Timezone Conversion New in 1.6

The importer ships with the official 2026 World Cup JSON and a full IANA timezone dropdown. Pick the source timezone of the JSON and the plugin auto-converts kickoff times to your site's timezone.

1

Open the importer

Go to Polla Mundial → Import Matches.

2

Pick the source timezone

Use the IANA dropdown (e.g. America/Mexico_City, Europe/Madrid, America/Sao_Paulo). The plugin remembers your last choice for next time.

3

Run the import

Click "Import Matches from JSON". Re-importing is safe: existing matches are updated by ID — never duplicated — and user predictions are preserved.

Match data included

  • • Home & Away teams (with flag emojis)
  • • Date & time (auto-converted to your TZ)
  • • Stadium & city
  • • Phase (Group, R16, QF, SF, 3rd, Final)
  • • Source TZ kept in metadata for audit

Tournament coverage

  • 48 Group Stage matches
  • 16 Round of 16 matches
  • 8 Quarter-finals
  • 4 Semi-finals
  • 2 3rd place + Final

Re-importing is safe

The importer matches by unique ID. Existing matches are updated, new ones are created, and predictions are never touched.

Multi-language New in 1.6

The plugin is 100% translatable — 231 source strings, professionally translated into 8 languages out of the box (1,848 translations total).

Languages included +4 NEW

🇪🇸
Español

es (source)

🇺🇸
English

en_US

🇧🇷
Português Brasil

pt_BR

🇵🇹
Português Portugal

pt_PT

NEW
🇮🇹
Italiano

it_IT

NEW
🇩🇪
Deutsch

de_DE

NEW
🇫🇷
Français

fr_FR

NEW
🇳🇱
Nederlands

nl_NL

How language switching works

The plugin reads WordPress' active language and loads the matching translation file automatically:

  1. Go to Settings → General → Site Language
  2. Pick a language WordPress supports (e.g. Português do Brasil)
  3. Save — done. Plugin strings switch on the next page load.

Performance: On WordPress 6.5+ the plugin loads the modern .l10n.php format, which is opcache-friendly and significantly faster than .mo. On older WordPress versions it falls back to .mo automatically.

Adding a new language

Roughly a 15-minute process:

  1. Translate the .pot file (/languages/laooz-world-cup-predictor.pot) using Poedit, Loco Translate or Crowdin.
  2. Save the result as laooz-world-cup-predictor-{LOCALE}.po (e.g. laooz-world-cup-predictor-fr_FR.po).
  3. Generate the binaries:
    wp i18n make-mo /path/to/languages/
    wp i18n make-php /path/to/languages/
    This creates the .mo and the modern .l10n.php files.
  4. Drop the files into /wp-content/plugins/laooz-world-cup-predictor/languages/ and select the matching language in Settings → General.

Tip: Drop your translations in /wp-content/languages/plugins/ instead of the plugin folder if you want them to survive plugin updates.

Theme Shield & CSS Namespace New in 1.6

Every plugin module renders inside the .polla-laooz-root namespace and is bulletproofed against theme styles:

  • Links: no underline leak from the theme
  • Lists: no inherited bullets / numbering
  • Tables: clean reset (borders, padding, hover)
  • Headings: normalized sizes and weights
  • FontAwesome icons: immune to theme overrides

The shield is fully scoped — it never leaks styles to the rest of your site. To customize plugin styles from your theme, just scope your CSS:

/* In your theme's stylesheet */
.polla-laooz-root .polla-ranking-card {
    background: #yourbrand;
    border-radius: 12px;
}

.polla-laooz-root .polla-score-pill button {
    background: #yourbrand-accent;
}

Tested with

Astra, Hello Elementor, Twenty Twenty-Four, Kadence, GeneratePress, Avada and many block themes. Works with any theme — old or new.

Managing Match Results

After each match finishes, enter the final score so the plugin can calculate points and update the ranking.

1

Open the match

Go to Polla Mundial → Matches and click "Edit" on the finished match.

2

Enter the final score

In the "Match Information" meta box: check "Match Completed", fill in Home Goals and Away Goals, and click Update.

3

Points calculate automatically

The plugin recalculates points for every prediction, updates the ranking and refreshes user profiles.

Knockout stages: Use only the regular-time score (90 minutes). Extra time and penalties are not counted.

Points System

A multi-level scoring system that rewards both accuracy and smart predictions.

Exact Score

10

Highest reward. You predict the exact final score.

Example: 2-1 / 2-1 → 10 pts

Correct Winner

5

Good prediction. You correctly predict who wins (or a draw).

Example: 3-1 / 2-0 → 5 pts

Correct Goals

3

Partial credit. Correct goal count for one team.

Example: 2-0 / 2-1 → 3 pts

Draw Bonus

+4

Special reward. Extra points for nailing a draw.

Example: 1-1 / 1-1 → 10 + 4 = 14 pts

Calculation table

Your Prediction Actual Result Points Breakdown Total
2-12-1 Exact Score (10) 10
3-12-0 Correct Winner (5) 5
2-02-1 Correct Goals Home (3) + Correct Winner (5) 8
1-11-1 Exact Score (10) + Draw Bonus (4) 14
3-00-2 Wrong winner — no points 0

For Developers New in 1.6

Public constants

Available everywhere after the plugin loads:

Constant Returns
POLLA_LAOOZ_VERSIONCurrent plugin version (e.g. '1.6.0')
POLLA_LAOOZ_PLUGIN_DIRAbsolute filesystem path to the plugin directory (with trailing slash)
POLLA_LAOOZ_PLUGIN_URLPublic URL to the plugin directory (with trailing slash)

Filters

polla_laooz_perfil_page_url

Override the absolute URL of the Profile Page used for ranking links and programmatic integrations.

// In your theme's functions.php or a mu-plugin
add_filter( 'polla_laooz_perfil_page_url', function( $url, $user_id ) {
    // Send everyone to a custom profile area
    return home_url( '/users/' . $user_id . '/' );
}, 10, 2 );

CSS namespace for customization

Every plugin module renders inside .polla-laooz-root. Use it as a scope when overriding styles from your theme:

.polla-laooz-root .polla-ranking-card { ... }
.polla-laooz-root .polla-score-pill   { ... }
.polla-laooz-root .polla-prediction   { ... }

Text domain

Use this text domain to add or override translations:

// Translate a plugin string
__( 'Ranking', 'laooz-world-cup-predictor' );

Frequently Asked Questions

Will it work on my theme?

Yes. v1.6 ships with Theme Shield, a CSS namespace that protects every module from theme styles. Tested with Astra, Hello Elementor, Twenty Twenty-Four, Kadence, GeneratePress, Avada and most block themes.

How do I switch the plugin language?

Change Settings → General → Site Language in WordPress. The plugin reads that value and switches automatically. Eight languages are bundled: Spanish, English, Portuguese (Brazil & Portugal), Italian, German, French and Dutch.

Do users need to register?

Yes. Users must be logged in to WordPress to predict, so each participant has a unique identity. Use any registration plugin you like (Ultimate Member, User Registration, etc.) or core WordPress registration.

Can users edit their predictions?

Yes — until the configurable closing time before kickoff. After that, predictions lock automatically.

What happens if I delete a match?

All predictions for that match are deleted with it and the ranking recalculates. This cannot be undone — to hide a match without deleting it, switch its status to draft.

Is it mobile-friendly?

Fully responsive — including the new pill-style score widget which keeps everything on a single line, with graceful name wrapping for long team names.

Can I reuse it for other tournaments?

Yes. Import a custom JSON of matches (the importer accepts any source timezone) and the points/ranking system works for any football tournament.

Is the plugin secure?

Yes. Nonces on every AJAX endpoint, sanitization on every input, capability checks on admin actions, and all DB queries use prepared statements.

How many users can participate?

No hard limit — the new ranking is paginated 100 per page specifically to handle large competitions. For 1000+ participants, use a caching plugin (LiteSpeed, WP Rocket, etc.) on the ranking page.

Changelog

1.6.0

Latest May 2026

Multi-language (NEW)

  • 100% translatable plugin — 231 source strings, 1,848 translations across 8 languages
  • Languages bundled: 🇪🇸 es (source), 🇺🇸 en_US, 🇧🇷 pt_BR, 🇵🇹 pt_PT
  • +4 NEW: 🇮🇹 it_IT (Italiano), 🇩🇪 de_DE (Deutsch), 🇫🇷 fr_FR (Français), 🇳🇱 nl_NL (Nederlands)
  • Loads modern .l10n.php on WordPress 6.5+ (opcache fast); .mo fallback on older versions
  • Documented 15-minute process to add new languages

Theme Shield (NEW)

  • All modules scoped under .polla-laooz-root
  • Bulletproof against theme styles: links, lists, tables, headings, FontAwesome
  • Tested across popular themes; never leaks styles to the rest of your site

Importer with timezone conversion (NEW)

  • Full IANA timezone dropdown when importing
  • Auto-converts JSON kickoff times to your site's timezone
  • Source TZ kept in metadata for audit
  • Remembers the last timezone used

Configuration page (NEW)

  • Settings API screen with explicit Profile Page assignment
  • Cached auto-detection + slug/title legacy fallbacks
  • New filter polla_laooz_perfil_page_url for programmatic integrations

In-admin Shortcodes guide (NEW)

  • Dedicated submenu: Polla Mundial → Shortcodes
  • Cards per shortcode with description, copy-paste examples, parameter tables and "Copy to clipboard" button
  • Featured card on the plugin Dashboard with CTA to the guide

Match module UX (refined)

  • Unified pill-style score widget with +/− buttons, input and inline separators
  • Save button reduced to icon-only (animated loading and success states)
  • Single-line layout: Home | Scores | Away | Actions
  • Long names wrap gracefully without overflow
  • Visible separator between matches
  • Help message only on the first item with a prediction (the rest are visually identified by the blue background)

Improved ranking

  • Without parameters: lists every participant paginated 100/page
  • With limite="N": Top N with podium for the first three
  • "View Full Ranking" button removed (replaced by pagination)
  • Usernames link to the profile page correctly

Robust user profile

  • Without parameters: falls back to the logged-in user (previously errored out)
  • Reads ?polla_usuario=ID from the URL (used by ranking links)
  • Gracefully handles users with no predictions

Other

  • Alias [polla_mis_pronosticos] is now fully functional
  • [polla_partidos_pronosticados] now shows pending AND finished predictions sorted by date
  • Parameter aliases: cantidad, limite, limit are interchangeable

1.0.0

Initial release
  • World Cup match predictions with multi-level points system
  • User profiles, ranking and prediction history
  • JSON importer with all 80 World Cup 2026 matches
  • Initial set of 4 shortcodes

Support

Get support

Issues, questions or customization requests — we reply within 24 hours on business days.

  • 6 months free support (Regular)
  • 12 months free support (Extended)
  • Extended support available on demand
Open support ticket

Need customization?

We offer custom development services to adapt the plugin to your specific needs.

Contact Laooz Studios