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

by sn4p.dev · github.com/yosnap/movie-sync-headless · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/yosnap/movie-sync-headless/archive/refs/heads/main.zip

Readme

=== Movie Sync Headless === Contributors: sn4pdev Tags: tmdb, imdb, movies, headless, rest-api Requires at least: 6.0 Tested up to: 6.6 Requires PHP: 7.4 Stable tag: 0.7.5 License: Free para uso no comercial

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

Read the full README on GitHub →