Te traemos este burdo truco para ejecutar funciones Worpress mediante un cronjob sin complicarte mucho la vida. Esto es una solución rápida y muy poco recomendable, pero está bien para ir aprendiendo o solucionar un marrón rápido sin necesidad de desarrollar un Plugin para WordPress completo.
Pongamos un ejemplo, queremos conectarnos a la API de Twitter y descargar los últimos tweets de un usuario para publicarlos en un post, queremos hacer esto una vez al día a las 11:45 am (por ejemplo). Vamos a hacerlo.
Para llevar acabo este burdo truco -que va en contra de cualquier manual de buenas prácticas- necesitamos:
Es el momento, vamos al lío, creamos una página nueva, en la que incluiremos el siguiente código:
require_once "wp-admin/includes/taxonomy.php"; tu_funcion();
Las etiquetas
son las que indican a nuestro plugin Allow PHP in Posts and Pages, dentro de ellas podemos escribir php sin problemas.
Lo primero, como vamos a crear posts, cargamos las funciones del archivo “taxonomy.php” ya que si no obtendríamos errores en algunas funciones que necesitamos.
La línea tu_funcion() ejecuta la función en la que tendremos lo que hemos decidido para el ejemplo, tomar una serie de Tweets y publicarlos en un post..
Una vez lo tengamos, guardamos la página como “http://midominio.com/mi-pagina” y ya estamos listos para seguir.
Si no cargásemos el archivo “wp-admin/includes/taxonomy.php” nos encontraríamos con un error de la función wp_create_category() como éste:
Fatal error: Call to undefined function wp_create_category() in /Users/noname/Sites/wp-content/plugins/my_plugin/my_plugin.php on line 95
Esto ocurre porque las funciones de este tipo sólo se cargan en el entorno del admin, salvo que lo forcemos haciendo el require a “wp-admin/includes/taxonomy.php“.
Ahora es el momento de definir lo que ocurre dentro de tu_funcion(), aquí ejecutaremos la llamada a la API de Twitter (en la que no vamos a ahondar de momento):
/*
* Librería para interactuar con la API de Twitter by Abraham
* https://github.com/abraham/twitteroauth
*/
require_once 'lib/OAuth.php';
require_once 'lib/twitteroauth.php';
/*
* Datos de nuestra APP de Twitter
*/
$consumerKey = 'xxxxxxxxxxxxx';
$consumerSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxx';
$accessToken = 'xxxxxxxxxxxxxxxxxxxxxxxx';
$tokenSecret = 'xxxxxxxxxxxxxxxxxxxxxxxx';
/*
* Iniciamos el objeto para interactuar con la API de Twitter
*/
$toa = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $tokenSecret);
/*
* Obtenemos los últimos tuits de un usuario
*/
$tuits = $toa->post('statuses/user_timeline',array('screen_name'=>'FaustoRM'));
//Iniciamos la variable cuerpo con algo de texto, esto será el cuerpo del post
$cuerpo = 'Los últimos tuits de @FaustoRM';
foreach($tuits as $tuit) {
$cuerpo .= '' . $tuit->text . '
;';
}
/*
* Nos inventamos un título para el post usando la fecha de hoy
*/
$titulo = 'Lo que dice FaustoRM hoy ' . date('d-m-Y') ;
/*
* Creamos una categoría o recogemos su id si ya está creada.
*/
$category_name = 'Tuits de FaustoRM';
$id_category = wp_create_category($category_name);
/*
* Generamos el Post y lo publicamos
*/
$post = array(
'post_content' => $cuerpo, //El cuerpo
'post_title' => $titulo, //El título
'post_status' =>'publish', //Define el estado del post
'post_category' => array(0,$id_category),
);
$id = wp_insert_post($post); //Crea el post y recoge la ID
/*
* Ya que estamos tuiteamos lo que acabamos de publicar
*/
$tweet = $titulo . ' http://tudominio.com/?p='.$id; //Generamos contenido para el tweet
$toa->post('statuses/update',array('status'=>$tweet)); //Esto envía a twitter el tweet
No vamos a entrar a explicar el código, sólo decir que se generará un post con los útimos tuits del autor de esta entrada @FaustoRM.
Nos conectamos al cronjob -no vamos a entrar en este tema en este post- y hacemos la llamada a la siguiente url “http://midominio.com/mi-pagina”, por ejemplo:
30 11 * * * curl http://midominio.com/mi-pagina
Este cronjob ejecutaría nuestro script todos los días a las 11:30 am.
Si lo hemos hecho bien, ahora tendremos esto ejecutándose en el periodo marcado en el cronjob, un WordPress generando contenido sin intervención humana… ¡Maravilloso!
“OpenAI lanza Instant Checkout: ahora puedes comprar desde ChatGPT, con soporte para más de un…
¿Sigues atrapado en los SaaS tradicionales? ¡Es hora de despertar! AI Tailorware está cambiando las…
Recientemente, el expresidente Donald Trump ha dado un giro al comercio electrónico internacional con nuevas…
A veces WordPress tiene fama de ser “para amateurs”... y oye, que sí, que hay…
Hoy te traigo un artículo del compañero (aunque ya nunca escribe, ejem) y CEO de…
Si quieres competir en el mundo digital de hoy en día, donde las compras no…