Esta noche al llegar a casa Eduo, me comentaba algo de hacer un sistema que publicara una vez por semana, cada semana, una recopilación de artículos, por ejemplo podrían ser titulares de los artículos de la semana, etc…
Una buena solución para esto es el uso de una de las funciones que Wordress 2.1 ofrece y que ha dado mucho de que hablar, se trata de wp_schedule_event
y wp_schedule_single_event
dos funciones que nos permiten programar eventos en nuestro wordpress, recurrentes y una sola vez, respectivamente.
wp_schedule_single_event
Esta función nos permite programar un evento en un momento concreto, por ejemplo día de tu cumpleaños, un «Hoy es mi cumple!!!».
wp_schedule_single_event( $timestamp, $hook, $args );
//$timestamp -> El tiempo indicado en timestamp cuando ha de ocurrir el evento;
//$hook --> Nombre de la función que ha de ejecutar cuando se cumpla el timestamp;
//$args -> Argumentos que podemos pasarle a la función
wp_schedule_event
En cambio con esta podemos definir un evento que se ejecutará cada X tiempo, muy util para caso de Eduo. Imaginemos que queremos escribir un post diario con el contenido …. 489.854 RSS de diferentes blogs, pues solo tendríamos que indicar que función hace eso y cada X (tiempo que indiquemos) se ejecutará, cargandosé el servidor y los de los vecinos leyendo tal cantidad de feeds.
wp_schedule_event( $timestamp, $recurrence, $hook, $args ) //$timestamp -> El tiempo indicado en timestamp cuando ha de ocurrir el evento; //$recurrence -> Cada cuando se ha ejecutar (leer más abajo); //$hook --> Nombre de la función que ha de ejecutar cuando se cumpla el timestamp; //$args -> Argumentos que podemos pasarle a la función
$recurrence
Por defecto la función wp_get_schedules()
, que es la que se encarga de recoger las posibles fracciones temporales está forma da de un array con dos posibles fracciones de tiempo, hourly
y diarly
(cada hora y cada día).
Pero wordpress permite añadir más mediante el archicono add_filter
, es que WordPress es una maravilla.
function more_reccurences() {
return array(
'weekly' => array('interval' => 604800, 'display' => 'Once Weekly'),
'fortnightly' => array('interval' => 1209600, 'display' => 'Once Fortnightly'),
);
}
add_filter('cron_schedules', 'more_reccurences');
Ahora ya disponemos de weekly
(semanalmente) y fortnightly
(quincena) (que creo que es cada dos semanas o una vez al mes, o algo asi). Para ello hemos definido un array que integrará las dos opciones indicando en cada una de ellas el interval (intervalo de tiempo entre ejecuciones) y display (El nombre de la fracción de se tiempo).
6 comentarios, 4 referencias
+
#