Create A Newsletter With The Block Editor (CANWBE)

Documentación Completa – Español


📋 Índice

  1. Introducción
  2. Instalación
  3. Configuración inicial
  4. Crear una newsletter
  5. Gestión de suscriptores
  6. Sistema de envío por lotes
  7. Reenvío de newsletters
  8. Configuración avanzada
  9. Solución de problemas
  10. Hooks y filtros
  11. FAQ

🎯 Introducción

Create A Newsletter With The Block Editor (CANWBE) es un plugin de WordPress que te permite crear y enviar newsletters profesionales utilizando el editor de bloques nativo de WordPress (Gutenberg).

✨ Características principales:

  • Editor visual: Usa el editor de bloques de WordPress
  • Envío por lotes: Sistema inteligente para evitar sobrecargar el servidor
  • Gestión de suscriptores: Administra tu lista de suscriptores fácilmente
  • Compatibilidad SMTP: Funciona con WP Mail SMTP y otros plugins de email
  • Logs detallados: Seguimiento completo de envíos y errores
  • Responsive: Newsletters que se ven bien en todos los dispositivos

🚀 Instalación

Instalación automática:

  1. Ve a Plugins → Añadir nuevo
  2. Busca «Create A Newsletter With The Block Editor»
  3. Haz clic en «Instalar ahora»
  4. Activa el plugin

Instalación manual:

  1. Descarga el plugin desde el repositorio
  2. Sube la carpeta a /wp-content/plugins/
  3. Activa el plugin desde Plugins → Plugins instalados

Requisitos del sistema:

  • WordPress 5.0 o superior
  • PHP 7.4 o superior
  • MySQL 5.6 o superior
  • Memoria PHP recomendada: 128MB mínimo

⚙️ Configuración inicial

1. Acceso al plugin

Después de la activación, encontrarás:

  • Newsletter en el menú lateral de WordPress
  • Submenús: Todas las newsletters, Añadir nueva, Email Batches

2. Configuración básica

  1. Ve a Newsletter → Configuración
  2. Configura:
    • Email del remitente
    • Nombre del remitente
    • Mensaje de cancelación de suscripción
    • Página de confirmación

3. Configuración SMTP (Recomendado)

Para mejores resultados de entrega, configura SMTP:

  • Instala WP Mail SMTP o similar
  • Configura tu proveedor de email (Gmail, SendGrid, etc.)
  • Prueba el envío antes de usar el plugin

✍️ Crear una newsletter

1. Nueva newsletter

  1. Ve a Newsletter → Añadir nueva
  2. Introduce un título para tu newsletter
  3. Usa el editor de bloques para crear el contenido

2. Bloques recomendados

  • Párrafo: Para texto principal
  • Encabezados: Para títulos y secciones
  • Imagen: Para contenido visual
  • Botón: Para call-to-actions
  • Columnas: Para layouts complejos
  • Espaciador: Para controlar el espaciado

3. Mejores prácticas de diseño

  • Ancho máximo: 600px para compatibilidad con clientes de email
  • Imágenes: Optimiza el tamaño (máximo 1MB por imagen)
  • Colores: Usa paletas consistentes con tu marca
  • Texto: Mantén párrafos cortos y legibles
  • CTAs: Usa botones llamativos y claros

4. Vista previa

  • Usa la vista previa antes de publicar
  • Prueba en diferentes dispositivos
  • Verifica todos los enlaces

👥 Gestión de suscriptores

1. ¿Quiénes reciben las newsletters?

Por defecto, las newsletters se envían a:

  • Usuarios registrados en WordPress
  • Roles específicos (configurables)
  • Listas personalizadas (si están configuradas)

2. Configurar destinatarios

// En functions.php de tu tema, puedes filtrar suscriptores:
add_filter('canwbe_newsletter_subscribers', function($subscribers, $post_id) {
    // Filtrar por rol
    return array_filter($subscribers, function($user) {
        return in_array('subscriber', $user->roles);
    });
}, 10, 2);

3. Formulario de suscripción

Crea un formulario de registro:

<form method="post" action="">
    <input type="email" name="subscriber_email" required placeholder="Tu email">
    <input type="hidden" name="action" value="canwbe_subscribe">
    <?php wp_nonce_field('canwbe_subscribe', 'canwbe_nonce'); ?>
    <button type="submit">Suscribirse</button>
</form>

📬 Sistema de envío por lotes

1. ¿Cómo funciona?

El plugin divide el envío de emails en lotes pequeños para:

  • Evitar timeouts del servidor
  • Reducir la carga del servidor
  • Mejorar la deliverability
  • Permitir seguimiento del progreso

2. Configuración de lotes

Configuración por defecto:

  • Emails por lote: 10
  • Delay entre lotes: 30 segundos
  • Máximo reintentos: 3
  • Delay para reintentos: 5 minutos

3. Monitorear envíos

  1. Ve a Newsletter → Email Batches
  2. Verás:
    • Estado del lote: Queued, Processing, Completed, Cancelled
    • Progreso: Porcentaje completado
    • Estadísticas: Enviados/Fallidos/Total
    • Acciones: Cancelar lotes activos

4. Estados de los lotes

  • 🔵 Queued: En cola, esperando procesamiento
  • 🟡 Processing: Enviando emails activamente
  • 🟢 Completed: Enviado completamente
  • 🔴 Cancelled: Cancelado por el administrador
  • ❌ Failed: Error crítico

🔄 Reenvío de newsletters

✅ Método recomendado: Duplicación

  1. Copia el contenido de la newsletter original
  2. Crea una nueva newsletter
  3. Modifica el asunto (ej: «RECORDATORIO: [Título original]»)
  4. Programa el envío

⚠️ Método alternativo: Borrador y republicar

  1. Edita la newsletter existente
  2. Cambia estado a «Borrador»
  3. Actualiza el post
  4. Vuelve a publicar

Nota: Este método reenviará a TODOS los suscriptores.

🔧 Evitar envíos duplicados (Avanzado)

// Filtrar usuarios que ya recibieron la newsletter
add_filter('canwbe_newsletter_subscribers', function($subscribers, $post_id) {
    $already_sent = get_post_meta($post_id, '_canwbe_sent_users', true) ?: array();
    
    return array_filter($subscribers, function($subscriber) use ($already_sent) {
        return !in_array($subscriber->ID, $already_sent);
    });
}, 10, 2);

📋 Checklist antes de reenviar

  • [ ] ¿Es necesario reenviar a TODOS?
  • [ ] ¿El contenido sigue siendo relevante?
  • [ ] ¿Has modificado el asunto del email?
  • [ ] ¿Has añadido una nota sobre el reenvío?
  • [ ] ¿Has revisado errores en el contenido?

🔧 Configuración avanzada

1. Personalizar configuración de lotes

// En functions.php
add_filter('canwbe_batch_size', function($size) {
    return 25; // Cambiar a 25 emails por lote
});

add_filter('canwbe_batch_delay', function($delay) {
    return 60; // Cambiar a 60 segundos entre lotes
});

add_filter('canwbe_max_retries', function($retries) {
    return 5; // Cambiar a 5 reintentos máximo
});

2. Personalizar plantillas de email

// Modificar el HTML del email
add_filter('canwbe_email_template', function($html, $content, $post_id) {
    // Tu lógica personalizada aquí
    return $html;
}, 10, 3);

3. Custom CSS para emails

// Añadir CSS personalizado
add_filter('canwbe_email_styles', function($css) {
    $css .= '
        .my-custom-class {
            color: #ff0000;
            font-weight: bold;
        }
    ';
    return $css;
});

4. Webhooks y notificaciones

// Notificación cuando se completa un lote
add_action('canwbe_batch_completed', function($batch_id, $batch_data) {
    // Enviar webhook a tu sistema externo
    wp_remote_post('https://tu-sistema.com/webhook', array(
        'body' => json_encode($batch_data),
        'headers' => array('Content-Type' => 'application/json')
    ));
}, 10, 2);

🛠️ Solución de problemas

❌ Errores comunes

1. «Call to undefined method get_batch_size()»

Solución: Añadir métodos faltantes en batch-email-sender.php:

public static function get_batch_size() {
    return apply_filters('canwbe_batch_size', self::BATCH_SIZE);
}

public static function get_batch_delay() {
    return apply_filters('canwbe_batch_delay', self::BATCH_DELAY);
}

public static function get_max_retries() {
    return apply_filters('canwbe_max_retries', self::MAX_RETRIES);
}

2. Emails no se envían

Posibles causas:

  • Configuración SMTP incorrecta
  • Límites del hosting
  • Plugin de caché interfiriendo
  • Cron jobs no funcionando

Soluciones:

  1. Instalar WP Mail SMTP
  2. Contactar al proveedor de hosting
  3. Excluir el plugin del caché
  4. Verificar WP Cron

3. Emails van a spam

Soluciones:

  • Configurar SPF, DKIM, DMARC
  • Usar servicio SMTP profesional
  • Evitar palabras spam en asunto
  • Incluir enlace de cancelación

📊 Logs y debugging

// Habilitar logs detallados
define('CANWBE_DEBUG', true);

// Ver logs en wp-content/debug.log
ini_set('log_errors', 1);
ini_set('error_log', ABSPATH . 'wp-content/debug.log');

🔍 Verificar configuración

  1. Configuración PHP: memory_limit, max_execution_time
  2. WP Cron: Verificar que funcione correctamente
  3. SMTP: Probar envío de test
  4. Permisos: Archivos y directorios correctos

🎣 Hooks y filtros

Filtros disponibles

// Modificar suscriptores
add_filter('canwbe_newsletter_subscribers', $callback, 10, 2);

// Modificar contenido del email
add_filter('canwbe_email_content', $callback, 10, 3);

// Modificar asunto del email
add_filter('canwbe_email_subject', $callback, 10, 2);

// Modificar configuración de lotes
add_filter('canwbe_batch_size', $callback);
add_filter('canwbe_batch_delay', $callback);
add_filter('canwbe_max_retries', $callback);

// Modificar plantilla HTML
add_filter('canwbe_email_template', $callback, 10, 3);

Acciones disponibles

// Antes de enviar newsletter
add_action('canwbe_before_send_newsletter', $callback, 10, 2);

// Después de enviar newsletter
add_action('canwbe_after_send_newsletter', $callback, 10, 2);

// Cuando se completa un lote
add_action('canwbe_batch_completed', $callback, 10, 2);

// Cuando falla un email
add_action('canwbe_email_failed', $callback, 10, 3);

// Cuando se cancela un lote
add_action('canwbe_batch_cancelled', $callback, 10, 1);

Ejemplos de uso

// Ejemplo: Registrar estadísticas personalizadas
add_action('canwbe_batch_completed', function($batch_id, $batch_data) {
    update_option('my_newsletter_stats_' . $batch_data['post_id'], array(
        'sent' => $batch_data['sent_emails'],
        'failed' => $batch_data['failed_emails'],
        'date' => current_time('mysql')
    ));
});

// Ejemplo: Notificar a Slack cuando se envía newsletter
add_action('canwbe_after_send_newsletter', function($post_id, $subscribers) {
    $webhook_url = 'https://hooks.slack.com/services/YOUR/WEBHOOK/URL';
    $message = sprintf(
        'Newsletter "%s" enviada a %d suscriptores',
        get_the_title($post_id),
        count($subscribers)
    );
    
    wp_remote_post($webhook_url, array(
        'body' => json_encode(array('text' => $message)),
        'headers' => array('Content-Type' => 'application/json')
    ));
});

❓ FAQ

¿Cuántos emails puedo enviar?

Depende de tu hosting y configuración SMTP. La mayoría de hostings permiten 100-300 emails/hora.

¿Es compatible con WooCommerce?

Sí, puedes enviar newsletters a clientes de WooCommerce filtrando por roles de usuario.

¿Funciona con Multisite?

El plugin funciona en cada sitio independientemente en una instalación Multisite.

¿Puedo programar newsletters?

Usa la función de «Programar» de WordPress para enviar newsletters en fechas específicas.

¿Cómo importar suscriptores?

Puedes importar usuarios a WordPress usando plugins como «Import Users from CSV» y luego usar este plugin.

¿Hay límite de suscriptores?

No hay límite en el plugin, pero tu hosting y proveedor SMTP pueden tener restricciones.


📞 Soporte

Reportar errores

  • GitHub: Crear issue
  • WordPress.org: Foro de soporte del plugin

Solicitar características

  • Usa GitHub para solicitudes de nuevas funcionalidades
  • Describe detalladamente tu necesidad
  • Incluye casos de uso específicos

Contribuir

  • Fork el repositorio en GitHub
  • Crea una rama para tu funcionalidad
  • Envía un pull request con descripción detallada

📄 Licencia

Este plugin está licenciado bajo GPL v2 o posterior.


🔄 Changelog

Versión 1.3

  • Sistema de envío por lotes
  • Compatibilidad con WP Mail SMTP
  • Interfaz de administración mejorada
  • Logs detallados

Versión 1.2

  • Soporte para editor de bloques
  • Mejoras en plantillas de email
  • Corrección de errores menores

Versión 1.1

  • Funcionalidad básica de newsletters
  • Gestión de suscriptores
  • Formularios de suscripción

¿Necesitas ayuda? Consulta la documentación en GitHub o crea un issue para soporte técnico.