WP Manifestindependent plugin directory
manifest / unclassified / voceador

Voceador – Autopublicación de notas en redes sociales

Voceador – Autopublicación de notas en redes sociales (plugin de WordPress)

by Aprendo MX · github.com/aprendomx/voceador · 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/aprendomx/voceador/archive/refs/heads/main.zip

Voceador – Autopublicación de notas en redes sociales es un plugin de WordPress que anuncia automáticamente en Páginas de Facebook y cuentas de Instagram cada nota que se publica por primera vez en un sitio de noticias.

Estado: fase 1b completada: publica en Páginas de Facebook con token manual (foto + comentario), con cola, reintentos y WP-CLI. Verificado en staging el 2026-09-23 (la foto; el comentario queda pendiente de que la app de Meta tenga pages_manage_engagement). Falta OAuth, Instagram, editor, wizard y ajustes.

Documentación

Requisitos

PHP 8.1+, WordPress 6.5+ (single site o Multisite).

Estructura del repositorio

La raíz del repositorio es la carpeta del plugin. readme.txt sigue el formato de WordPress.org y .distignore define qué queda fuera del ZIP distribuible.

Desarrollo

Requisitos: Docker y Node 22+. No hace falta PHP ni Composer en el host; Composer se ejecuta dentro del contenedor y solo instala herramientas de desarrollo.

El directorio del repositorio debe llamarse voceador.

npm install
npm run env:start              # WordPress en http://localhost:8888 (admin / password)
npm run env:stop               # detiene el entorno
npm run composer -- install    # PHPUnit y PHPCS dentro del contenedor
npm run test                   # tests en single site
npm run test:multisite         # tests en Multisite
npm run lint                   # WordPress Coding Standards
npm run lint:fix               # corrige el formato automáticamente

npm run test excluye el grupo ms-required; esos tests solo corren con npm run test:multisite.

WP-CLI

Con el plugin activo, wp voceador expone estos comandos:

wp voceador channels add-facebook --page-id=<id> [--token=<page-token>] [--token-file=<ruta|->] [--alias=<alias>]
wp voceador channels list [--format=<table|json|csv>]
wp voceador channels delete <id>
wp voceador publish <post_id> [--channel=<id>] [--source=<source>] [--force]
wp voceador retry <post_id> [--channel=<id>] [--comment] [--force]
wp voceador status

channels add-facebook valida el Page Access Token contra /me antes de guardar el canal; el token nunca se imprime ni se registra. Pásalo con --token-file, no con --token: la forma recomendada es leerlo por STDIN con --token-file=- para que no quede en el historial de shell ni en el log de sudo:

printf '%s' "$TOKEN" | wp voceador channels add-facebook --page-id=<id> --token-file=-

--token-file=<ruta> lee el token de un archivo; --token (menos recomendable) lo acepta en la propia línea de comandos.

publish reintenta un post en los canales activos (o en uno concreto con --channel) y sale con código 1 si algún canal queda en failed; --force reintenta también trabajos marcados como no verificados (unverified). retry reintenta los trabajos ya existentes de un post que estén en failed, skipped o rate_limited (o, con --comment, el comentario de un trabajo ya publicado); acepta --channel y --force igual que publish. status resume canales por estado, trabajos por estado, si hay Action Scheduler o cron disponible, y los últimos eventos del log.

npm run build:zip genera el ZIP distribuible en build-zip/.

Para probar la desinstalación usa siempre wp plugin uninstall voceador --skip-delete: la carpeta del plugin en wp-env es este repositorio y sin ese flag WP-CLI borraría los archivos.

En la suite de tests el Trigger global está desenganchado; los tests que lo necesiten registran su propia instancia.

Cifrado de credenciales

Los tokens de los canales se cifran con una clave derivada de AUTH_KEY/SECURE_AUTH_KEY (o de la constante VOCEADOR_ENCRYPTION_KEY, si se define; es la opción recomendada). Rotar esas salts invalida todos los canales conectados, que habrá que reconectar.

Publicar en WordPress.org

El repositorio está preparado para enviarlo al directorio oficial: readme.txt en el formato requerido, languages/voceador.pot, Plugin Check en el CI y despliegue a SVN por etiqueta. Los pasos completos están en docs/publicar-en-wordpress-org.md.

npm run check:plugin   # Plugin Check contra el paquete distribuible
npm run i18n           # regenera languages/voceador.pot

Documentos legales

Meta exige que la app que conecta el plugin tenga URL públicas de política de privacidad, condiciones de servicio e instrucciones de eliminación de datos. Los textos están en docs/legal/ y pueden publicarse tal cual (por ejemplo en GitHub Pages o en una página del sitio):

Licencia

GPL-2.0-or-later. Ver LICENSE.