SEO para Google

Cómo usar funciones de WordPress para un cronjob

A veces nos interesa usar funciones de WordPress externamente para un cronjob, para alimentar otro sitio web, para un feed, para interactuar con alguna API o alguna idea loca similar.

Usar funciones wordpress fuera de wordpressLas funciones de WordPress están muy bien pensadas y depuradas para que sea muy sencillo tratar con el contenido de este CMS, según vamos avanzando en nuestros desarrollos basados en WordPress a veces surgen necesidades de usar sus funciones sin cargar el sitio completo, la más sencilla que se me ocurre es ejecutar un cronjob que interactúe con nuestro contenido. Un ejemplo práctico podría ser un cronjob que coja un post y publicarlo en Twitter a través de la API de Twitter cada 25 minutos.

¿Qué necesitamos de WordPress para esto? Pues bien, acceso a las funciones de wordpress y a nuestra base de datos, si no cargamos las plantillas mejor, más rendimiento -y además evitaremos que Analytics nos mida cosas extrañas…-. Para tener esto vamos a crear un archivo y cargar WordPress sin plantillas.

Cargando WordPress sin plantillas

Esto es extremadamente sencillo, veamos el código:

/*
* Si vamos a ejecutar tareas cron Apache no nos pasará las variables de servidor, las tenemos que forzar, * es sencillo.
*/
$_SERVER['HTTP_HOST'] = 'www.tuservidor.com';
$_SERVER['REQUEST_URI'] = '/';
/**
* Le decimos a WordPress que no vamos a utilizar el sistema de plantillas definiendo WP_USE_THEMES como falso.
*
* @var bool
*/
define('WP_USE_THEMES', false);

/** Ahora cargamos el entorno WordPress con las funciones pero sin plantilla */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );

Como puedes ver, nos limitamos a cargar el archivo “wp-blog-header.php” que es el que hace el trabajo duro, previamente hemos definido que WP_USE_THEMES sea false, con esto evitamos que cargue el sistema de plantillas.

Si quieres evitar que la página devuelva un 404, sobre todo esto es importante si queremos indexar la página o va a estar a la vista de algún usuario, debes cargar los header correctos para suplir que WordPress devuelve un 404 cuando no sabe qué tipo de página es (post, página, etc…). Para ello añade esto a tu código:

header("HTTP/1.1 200 OK"); 
header("Status: 200 All rosy");

Una vez tenemos esto claro podemos empezar a trabajar con todas las funciones de WordPress fuera del entorno WordPress. Si te ha sido útil este artículo no dudes en compartirlo, si tienes alguna duda déjanos un comentario 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *