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
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.zipReadme
=== 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 =
- Activa el plugin.
- Ve a Movie Sync → Ajustes e introduce tu token de TMDb (Bearer token v4, recomendado).
- Pulsa "Verificar conexión" para confirmar que el token es válido.
- Elige el origen del catálogo: Populares, Mejor valoradas, o una lista de IDs específicos de TMDb.
- 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.txtahora 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=nodel 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