Install
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.zipSincroniza 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