Una tarea cron es un comando que cPanel ejecuta a una hora. En WordPress, WP-Cron no es un cron de verdad: se dispara cuando alguien visita el sitio. Si nadie entra, los avisos, las publicaciones programadas y WooCommerce se atrasan. En el sitio elástico puedes poner un cron real y apagar el de WordPress.

cPanel → Avanzada → Tareas cron (Cron Jobs). No es el programador de un servidor cloud con root. PHP de la cuenta: versión de PHP (MultiPHP).

Qué vas a tener al terminar

Una línea cron que puedes leer, el correo de salida del cron si falla, y —si usas WordPress— DISABLE_WP_CRON en wp-config.php más un wget/curl cada quince minutos.

1. Crear el cron en cPanel

  1. Abre Tareas cron.
  2. El correo electrónico para el output: una casilla tuya. Si el comando imprime algo cada minuto, esa casilla se llena. Para un wget silencioso, deja el correo y usa redirección a /dev/null (abajo).
  3. Ajustes comunes: cada hora, dos veces al día, una vez al día. O los cinco campos a mano (minuto, hora, día, mes, día de la semana).
  4. Comando: la ruta completa. En cPanel suele copiarse un ejemplo. Añadir una nueva tarea cron.

No pongas un cron cada minuto «por si acaso». En un sitio elástico el techo LVE (procesos de entrada, CPU) se nota: un PHP pesado cada minuto es una forma elegante de pegarte el 508. Quince minutos es el ritmo habitual de WP-Cron. Cada hora basta para muchos plugins de backup.

2. WordPress: apagar WP-Cron y dispararlo de verdad

En wp-config.php, antes de «That’s all, stop editing», una línea:

define('DISABLE_WP_CRON', true);

Eso deja de enganchar el cron a las visitas. Si no pones el cron de cPanel después, las tareas de WordPress se quedan quietas: no lo hagas a medias.

Comando típico (cambia el dominio):

wget -q -O - 'https://tudominio.com/wp-cron.php?doing_wp_cron' >/dev/null 2>&1

O con curl:

curl -sS -o /dev/null 'https://tudominio.com/wp-cron.php?doing_wp_cron'

Minuto: */15 (cada quince). El HTTPS tiene que responder: AutoSSL listo. AutoSSL. Si el sitio aún está en HTTP, usa la URL que realmente abre, no una que redirige en bucle.

HTTPS forzado: .htaccess o el artículo de HTTPS en WordPress.

3. Otros crons útiles

  • Un script PHP tuyo: /usr/local/bin/php -q /home/USUARIO/public_html/cron.php — la ruta de php y del home las muestra cPanel en la misma pantalla. No copies la de un tutorial de otro panel.
  • WooCommerce y suscripciones: el cron de WordPress cada 15 minutos suele alcanzar; si las renovaciones se atrasan, mira esto antes de subir el plan.
  • n8n u otras apps en cloud no se programan aquí: el cron de cPanel es de la cuenta de hosting.

4. Cómo saber si corre

Quita un momento la redirección a /dev/null y mira el correo del cron. O crea un archivo de log en el comando. JetBackup no sustituye un cron de plugin que falló: son copias distintas.

Si el sitio está en modo mantenimiento o un plugin de seguridad bloquea wp-cron.php, el wget recibe 403. Error 403.

Si algo no arranca

  • El comando «no encontrado»: ruta de wget o de php distinta; usa la que cPanel sugiere.
  • WordPress no publica lo programado: DISABLE_WP_CRON en true y el cron de cPanel mal escrito o con http en un sitio que ya redirige a https.
  • El correo de cron explota: el comando imprime HTML; siléncialo o baja la frecuencia.
  • 508 o lentitud a la misma hora: el cron es demasiado frecuente o el PHP es pesado. No lo pongas cada minuto.

Si el cron está bien y WordPress no dispara acciones, ticket con la línea exacta (sin claves) y la hora. El cron no envía el correo de la empresa: eso es la casilla. Correo en cPanel · Outlook · iPhone. Producto: Cloud Web Hosting.