WP Manifestindependent plugin directory
manifest / events / world-cup-2026-widget

World Cup 2026 Widget

plugin wordpress

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/hcardoso81/world-cup-2026-widget/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Plugin WordPress para renderizar cards elegantes de partidos del Mundial por fecha usando API-Football.

El plugin agrega un shortcode propio que consulta el endpoint /fixtures de API-Football desde WordPress y muestra un carrusel horizontal de partidos con equipos, logos, marcador, estado, fase, estadio y penales cuando correspondan.

Requisitos

  • WordPress 6.0 o superior.
  • PHP 7.4 o superior.
  • Una API key de API-Football / API-SPORTS.

Instalacion

  1. Copiar la carpeta world-cup-2026-widget dentro de wp-content/plugins/.
  2. Activar el plugin desde WordPress.
  3. Ir a Ajustes > World Cup 2026.
  4. Pegar la API key.
  5. Elegir la fecha de prueba para el render propio.
  6. Copiar alguno de los shortcodes generados.

Configuracion

Valores por defecto:

  • League ID: 1
  • Season: 2026 para el Mundial 2026, o 2022 para probar con Qatar 2022 en planes Free.
  • Match date: 2022-11-20

La API key se guarda en la opcion wc26_widget_settings.

Query API-Football

Para traer todos los partidos de un dia:

GET https://v3.football.api-sports.io/fixtures?league=1&season=2026&date=2026-06-11

Para probar con el Mundial 2022 en plan Free:

GET https://v3.football.api-sports.io/fixtures?league=1&season=2022&date=2022-11-20

Header obligatorio:

x-apisports-key: TU_API_KEY

La misma query devuelve los partidos pendientes, en vivo o finalizados segun el momento en que se consulte. El campo clave es:

fixture.status.short

Estados frecuentes:

  • NS: no iniciado.
  • 1H: primer tiempo.
  • HT: entretiempo.
  • 2H: segundo tiempo.
  • FT: finalizado.
  • AET: finalizado luego de prorroga.
  • PEN: finalizado por penales.

El shortcode propio cachea asi:

  • Si hay un partido en vivo: 60 segundos.
  • Si no hay partidos en vivo: 15 minutos.

Shortcodes

Tarjetas propias con los partidos de la fecha configurada en admin:

[world_cup_2026_matches]

Tarjetas propias con fecha explicita:

[world_cup_2026_matches date="2026-06-11"]

Ejemplo para Qatar 2022:

[world_cup_2026_matches date="2022-11-20"]

El shortcode legacy [world_cup_2026] tambien renderiza los partidos por fecha.

Seguridad de la API key

El logger no guarda API keys, tokens ni secretos.

Modo mock

Para probar el render sin llamar a API-Football, guardar esta API key en el admin:

mock

Con ese valor, [world_cup_2026_matches] devuelve partidos falsos con estructura compatible con API-Football:

fixture, league, teams, goals, score

El render propio normaliza cada fixture a los atributos que usa la tarjeta:

id, date, stage, stadium, homeTeam, homeLogo, homeScore,
awayTeam, awayLogo, awayScore, status, statusLabel, penalties

Esto permite revisar resultados, estados en vivo, logos, fase, estadio y penales sin llamar a API-Football.

Logs

El plugin guarda errores y advertencias en:

world-cup-2026-widget/logs/plugin.log

Tambien muestra las ultimas lineas del log en Ajustes > World Cup 2026.

Estructura tecnica

  • src/Api/ApiFootballClient.php: cliente HTTP para API-Football v3.
  • src/Admin/SettingsPage.php: admin page, API key, fecha de prueba y listado de shortcodes.
  • src/Frontend/Shortcode.php: shortcode y render propio de partidos.
  • src/Support/Settings.php: sanitizacion y defaults.
  • assets/css/public.css: estilos publicos.

IDE

Si VS Code muestra funciones WordPress como indefinidas, ejecutar:

Intelephense: Clear Cache
Developer: Reload Window

El archivo stubs/wordpress-plugin-functions.php existe solo para analisis estatico del IDE. El plugin no lo carga en WordPress.