WordPress

Compartiendo experiencias sobre la plataforma CMS más importante del mundo

BuddyPress

El increíble y fabuloso plugin de WordPress para crear redes sociales verticales

¿Cómo crear una RED SOCIAL?

Experiencias, ideas y materiales para llevar adelante tu próximo proyecto de creación de una red social

Mostrando entradas con la etiqueta cron. Mostrar todas las entradas
Mostrando entradas con la etiqueta cron. Mostrar todas las entradas

martes, 10 de septiembre de 2013

El cron de Unix a dejado de funcionar

Como webmaster, es posible que tengas procesos ejecutándose en el CRON. Pero qué sucede si de pronto dejan de funcionar, por ejemplo luego de un reinicio inesperado del sistema??

Mi primera recomendación es que analices en este enlace las causas más comunes: http://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work

Algunas acciones rápidas.

1) Verificar que se esté ejecutando:
pgrep cron

2) Verificar si no expiró la contraseña del usuario correspondiente:

chage -l nombreDeUsuario

3) Verificar la configuración de nuestro crontab

crontab -l -u nombrDeUsuario

4) Eliminar el crontab de un usuario

crontab -r -u nombrDeUsuario

5) Reiniciar el servicio de cron
service crond restart


6) Un caso muy raro, pero que me ha sucedido es obtener el siguiente error:

"attempt to lock file /home/virtfs/_lock/500 timed out after 25 attempts; lock still held by pid 0
Could not create lock file: /home/virtfs/_lock/500"

Ese error lo he recibido por mail, luego de la ejecución del proceso. La solución: borrar el archivo "500"

Nota importante:

Mientras solucionan su problema, pueden recurrir a un "cron web", es decir ejecutar sus programas desde fuera del servidor, si es que son accesibles desde la web. Hay muchísimas opciones, una de las que he usado sin problemas es: http://www.mywebcron.com/


Pueden encontrar más info: http://www.linuxtotal.com.mx/?cont=info_admon_006

martes, 19 de febrero de 2013

Automatización avanzada para Community Managers - Caso 2

Los community managers necesitan automatizar tareas, para poder así ocupar su valioso tiempo en actividades estratégicas y de relacionamiento personalizado con clientes. La automatización se encara muchas veces con herramientas gratuitas o no. Pero no debe ser la única forma. Con un poco de programación, se pueden obtener resultados mucho más contundentes y complementarios. En esta serie de artículos publicaremos ejemplos de casos reales que esperamos les sirvan de inspiración, para estar un paso adelante de la competencia!

Ver toda la serie de Automatización.

Requerimiento

Se requiere crear un artículo en WordPress que tenga la forma de un resumen fotográfico de los últimos 16 artículos. Este artículo debe ser enviado en una newsletter de forma automática. La intervención del usuario debe ser nula.

¿Por qué? Para aumentar las lecturas, con un formato más amigable a través del uso de una galería de fotos, creando además la costumbre en el usuario de recibir esta información con cierta frecuencia.

En la siguiente imagen se puede ver un ejemplo:




Herramientas involucradas

  • WordPress
  • WordPress API
  • PHP
  • MySQL
  • Cron
  • RSS
  • MailChimp

Enfoque de solución

1. Un proceso PHP controla frecuentemente si se ha alcanzado la cantidad de 16 nuevos artículos con fotos, luego de la publicación del último resumen fotográfico  Para ello programamos el Cron de nuestro server para que ejecute el proceso por lo menos una vez al día. Además hemos creado una tabla en MySQL para guardar el ID de último artículo procesado.

2. Utilizando la API de WordPress, creamos un artículo en nuestro sitio con el HTML y estilo que nos guste, agrupando las fotos según nuestro criterio. Cada foto tendrá un link al artículo al que haga referencia.

3. El RSS de nuestro sitio publicará el resumen fotográfico como una artículo nuevo. Aquí no hay que hacer nada, es una funcionalidad estándar.

4. Dentro de MailChimp, creamos una campaña basada en nuestro RSS y seleccionamos en que días y horarios puede ser enviada. Esto cierra el circuito. Sólo hay que sentarse a esperar que el sistema genere los resúmenes por nuestra cuenta. Y que MailChimp los tome de nuestro RSS y así lo envíe a nuestros lectores.

Quizá parezca complicado, pero está hecho con pocas líneas de código. La imagen lo resume:




Los puntos más importantes son:
  1. Crear una consulta SQL para detectar las novedades que contengan fotos.
  2. Crear una tabla para almacenar el id de la última novedad procesada.
  3. Aprender a usar la API de WordPress para crear el post.
  4. Crear una campaña RSS en MailChimp.

Beneficios:

Los resúmenes sirven para recuperar lecturas perdidas. Si el resumen es vistoso y frecuente, más interés generará. Luego de implementar la acción, el tráfico aumentará con nada de esfuerzo.

Enlaces de interés:


Quedo a la espera de preguntas, comentarios e ideas. Saludos!

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!