miércoles, 5 de diciembre de 2012

¿Cómo programar en el tiempo un proceso PHP que acceda a la API de WordPress y envíe un mail?

Vamos a suponer que tenemos el requerimiento de crear un proceso con estas características:

  • Se ejecute en forma periódica
  • Consulte datos de la base de datos de WordPress
  • Cree un post en WordPress en forma automática
  • Envíe un correo electrónico
Para encarar este requerimiento, seguiremos los siguientes líneamientos
  1. Creamos una página PHP
  2. Que pueda acceder a nuestros datos de WordPress
  3. Que pueda acceder a la API de WordPress
  4. Que pueda enviar un correo electrónico
  5. Programamos la ejecución de la página con el cron de nuestro hosting.

1 ¿Cómo hacer que nuestra página PHP tenga acceso a WordPress?

Para ello agregamos al principio las siguientes líneas de código:

<?php 

  $_SERVER[ 'HTTP_HOST' ] = 'TU-HOST';
  $wp_load_loc = "/homeTU-HOME/TU-USUARIO/public_html/wp-load.php";
  require_once($wp_load_loc);

Los datos exactos de path y usuario, en mi caso que utilizo BlueHost, los obtuve de la sección Stats del Cpanel:



2 ¿Cómo consultamos la base de datos de WordPress?

Esto lo explicamos anteriormente en el artículo de creación de un plugin con acceso a la Base de datos. El código sería el siguiente:

global $wpdb;

  $destacados = $wpdb->get_results("SELECT cadena FROM destacado LIMIT 0,15", "ARRAY_N");

  $titulo = 'Destacado del día';

  $cuerpo = '';

  foreach ( $destacados as $destacado)
  {
  $cuerpo = $cuerpo . $destacado[0];
  }


3 ¿Cómo creamos un post usando la API de WordPress?

Esto es realmente sencillo. De todas maneras, los parámetros pueden varias según nuestras necesidades. Más información en: http://codex.wordpress.org/Function_Reference/wp_insert_post

El código sería:

$new_post = array(
  'post_title' => $titulo,
  'post_content' => $cuerpo,
  'post_status' => 'draft',
  'post_author' => 1,
  'post_type' => 'post'
  );
$post_id = wp_insert_post($new_post);

En caso que queramos efectuar una salida por pantalla para hacer pruebas, podemos usar el siguiente código:

  echo '<meta http-equiv="content-type" content="text/html; charset=utf-8"></meta>';
  echo $titulo; 
  echo $cuerpo;


4 ¿Cómo enviamos un correo electrónico?

El último paso es enviar el correo, para lo cual usamos este código:

 mail("blabla@blabla.com", $titulo, $cuerpo );


5 ¿Cómo programamos la ejecución periódica de nuestro proceso?

Para programar la tarea en el cron de BlueHost, vamos a la sección advanced del Cpanel de BlueHost:


Lo más importante es programar el comando. BlueHost nos ayudará, pero puede quedar una línea como la siguiente:

/ramdisk/bin/php5 -c /home/USUARIO/PathTo/php.ini /home/USUARIO/public_html/wp-content/test.php

Donde los datos más importantes son el Home, el Usuario y la página en sí que hemos creado.


Imagine el poder que podemos dar a nuestro sitio con esto!!!

Eso es todo por hoy, cualquier duda me consultan.
Hasta la próxima!

0 comentarios:

Publicar un comentario