¿Se puede activar cron llamando a wp-cron.php desde la línea de comandos en lugar de usar wget?
¿Se puede activar wp-cron.php
usando por ejemplo $ php /ruta/hacia/wordpress/wp-cron.php
en lugar de pasar por el método wget usando por ejemplo wget -q -O - http://ejemplo.com/wp-cron.php>/dev/null 2>&1
?

Al revisar la documentación dentro del archivo wp-cron.php
parece que es absolutamente posible simplemente llamar $ php wp-cron.php
:
/** * Un pseudo-daemon CRON para programar tareas de WordPress * * WP Cron se activa cuando el sitio recibe una visita. En el escenario * donde un sitio puede no recibir suficientes visitas para ejecutar tareas programadas * en un tiempo oportuno, este archivo puede ser llamado directamente o a través de un * daemon CRON del servidor por X número de veces. * * Definir DISABLE_WP_CRON como true y llamar este archivo directamente son * mutuamente excluyentes y lo último no depende de lo primero para funcionar. * * La solicitud HTTP a este archivo no ralentizará al visitante que acceda * cuando el trabajo cron necesite ejecutarse. * * @package WordPress */
Otra opción que puedes hacer en la línea de comandos es usar wp-cli para eso.
$ cd /ruta/hacia/wordpress
$ wp cron event run --due-now
Para forzar la ejecución de un único cron independientemente de su programación establecida, ejecuta:
$ wp cron event run my_custom_cron_event
O como un comando de una línea para usar en un crontab y ejecutarse cada hora completa + 15 minutos (2:15 pm, 3:15pm, 4:15pm etc.):
15 * * * * cd /ruta/hacia/wordpress && wp cron event run --due-now > /dev/null 2>&1

@BarryChapman – Básicamente, curl es solo otra solicitud de página. Por lo que puede ralentizar un poco el sitio cuando se ejecuta el cron.

@BarryChapman Supongo que cualquier código que dependa de $_SERVER u otras variables de sesión no funcionará bien cuando se llame desde la línea de comandos. Aparte de eso, deberías estar bien

Vale la pena mencionar que wp-cli ejecuta cron a través de HTTP. Definitivamente no es lo mismo que llamar a wp-cron desde CLI PHP, porque por ejemplo max_execution_time puede afectar las ejecuciones de cron. Si tienes problemas con tareas cron que se interrumpen, recomendaría llamar directamente a wp-cron.php, sin involucrar wp-cli.

@GaborGarami ¿wp-cli hace una solicitud http desde la línea de comandos??

Sí, es posible activar ejecuciones cron simplemente con $ php /ruta/a/wordpress/wp-cron.php
.
Alternativamente puedes usar curl
:
*/10 * * * * curl http://ejemplo.com/wp-cron.php > /dev/null 2>&1
Y puedes agregar la siguiente línea a tu wp-config.php
para desactivar la ejecución de crons mediante peticiones HTTP:
define('DISABLE_WP_CRON', true);

Si estás usando curl, sigue siendo una solicitud HTTP, así que probablemente no sea una buena idea deshabilitar DISABLE_WP_CRON?

@Bananaapple – Al llamar directamente a wp-cron.php evitas eso. Pero al mismo tiempo DISABLE_WP_CRON
impide que el cron se active cuando los visitantes navegan por cualquier página de tu sitio. Consulta https://kinsta.com/knowledgebase/disable-wp-cron/ y en los comentarios del archivo en mi respuesta anterior Definir DISABLE_WP_CRON como verdadero y llamar a este archivo directamente son mutuamente excluyentes y lo segundo no depende de lo primero para funcionar
.
