WP Manifestindependent plugin directory
manifest / content / movie-sync-headless

Movie Sync Headless

Plugin WordPress headless: sincroniza catálogo de películas desde TMDb hacia CPTs propios, expone REST API movies-api/v1

★ 1stars

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/yosnap/movie-sync-headless/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.

Sincroniza un catálogo de películas desde TMDb (o IMDb) hacia CPTs propios y lo expone vía una REST API headless.

Description

Movie Sync Headless es un plugin "Data Fetcher / Data Provider": importa datos de un catálogo de películas desde una API externa (TMDb por defecto, arquitectura agnóstica para IMDb u otros proveedores), los guarda en Custom Post Types propios (Películas, Reseñas), y los expone en un namespace REST propio (movies-api/v1) listo para consumir desde page builders (Bricks, Elementor) o stacks desacoplados (Astro, React).

Cero dependencias externas: sin Composer, sin librerías PHP de terceros en tiempo de ejecución.

Configuración

  1. Activa el plugin.
  2. Ve a Movie Sync → Ajustes e introduce tu token de TMDb (Bearer token v4, recomendado).
  3. Pulsa "Verificar conexión" para confirmar que el token es válido.
  4. Elige el origen del catálogo: Populares, Mejor valoradas, o una lista de IDs específicos de TMDb.
  5. Ve a Movie Sync → Sincronizar y pulsa "Sincronizar Ahora".

Sincronización automática

Configura la frecuencia (diaria/semanal) en Ajustes. WP-Cron depende del tráfico del sitio; en producción se recomienda deshabilitar WP-Cron (define('DISABLE_WP_CRON', true);) y disparar wp-cron.php desde un cron real del servidor.

API REST

  • GET /wp-json/movies-api/v1/all?genre=&min_rating=&page=&per_page=&orderby=
  • GET /wp-json/movies-api/v1/movie/{id}?embed_reviews=1

Documentación completa en formato OpenAPI 3.1: docs/openapi.yaml, visualizable desde Movie Sync → API Docs en el admin (Swagger UI vía CDN).

Hooks para desarrolladores

El plugin registra sus CPTs (msh_movie, msh_review) y taxonomía (msh_genre) en el hook init, por lo que los filtros/acciones estándar de WordPress para CPTs (registered_post_type, msh_movie_row_actions, etc.) están disponibles para extender el plugin desde un plugin/child theme.

Desinstalación

Por defecto, desinstalar el plugin conserva las películas y reseñas importadas (dato valioso para un catálogo headless). Activa "Purgar datos al desinstalar" en Ajustes si prefieres que se borren junto con la configuración.

Changelog

0.7.5

  • Indicador de estado del token TMDb en Ajustes (ofuscado, sin exponer el valor real) — confirma si se guardó/desencriptó correctamente sin necesitar "Verificar conexión".
  • Fail-fast: si no hay token resuelto (guardado o desencriptado), corta antes de llamar a TMDb con un mensaje claro, en vez de que TMDb devuelva "Invalid API key" por un Bearer vacío.

Nota: a partir de 0.7.4 el número de versión del plugin (este header, Stable tag, y el tag git) es uno solo — se dejó de usar un "versión de release" fija separada del semver interno de fase.

0.7.4

  • Unifica el número de versión: el header del plugin y readme.txt ahora reflejan la versión real del código (antes quedaban fijos en 0.1.0 pese a los fixes 0.7.1-0.7.3, generando confusión).

0.7.3

  • Fix: autoload=no del token TMDb no se aplicaba en el primer guardado de Ajustes.

0.7.2

  • Fix: "Verificar conexión" probaba el token ya guardado en vez del tipeado en el campo (causaba 401 falsos con tokens válidos si no se guardaba el formulario antes de verificar).
  • Los errores de conexión ahora muestran el mensaje real de TMDb, no solo el código HTTP.

0.7.1

  • Fix (code review): TypeError fatal en /movie/{id} inexistente (debía devolver 404).
  • Fix: race condition en el lock de sincronización; botón Cancelar no liberaba el lock en servidor.
  • Fix: entidades HTML corrompían el payload JSON de texto plano.

0.1.0 - 0.7.0

  • Versión inicial: capa HTTP agnóstica (TMDb), CPTs de Películas/Reseñas, motor de sincronización (AJAX batch + WP-Cron), API REST movies-api/v1 con filtros y cache, documentación OpenAPI.

Créditos

Dev: sn4p.dev — https://sn4p.dev