Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Problema Hook/Cron

Estas en el tema de Problema Hook/Cron en el foro de WordPress en Foros del Web. Hola a todos. He creado esta pequeña función para modificar la fecha de los post cada hora: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original Hi.   ...
  #1 (permalink)  
Antiguo 20/11/2013, 00:14
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 136
Antigüedad: 14 años, 11 meses
Puntos: 0
Problema Hook/Cron

Hola a todos.

He creado esta pequeña función para modificar la fecha de los post cada hora:

Código PHP:
Ver original
  1. Hi.
  2.  
  3. I have this fuction in my fuctions.php
  4.  
  5.  
  6.  
  7.     <?php
  8.     if ( !wp_next_scheduled('re-post2') ) {
  9.        wp_schedule_event( time(), 'hourly', 'rep-post2' );
  10.     }
  11.    
  12.     function repostads() {
  13.         global $wpdb;
  14.      $querystr = "
  15.        UPDATE $wpdb->posts
  16.        INNER JOIN $wpdb->repost
  17.        ON $wpdb->posts.ID = $wpdb->repost.post_id
  18.        AND $wpdb->repost.DIA_FINAL >= NOW()
  19.        AND $wpdb->repost.ESTADO = 'OK'
  20.         SET $wpdb->posts.post_date = NOW()
  21.          ";
  22.     }
  23.     add_action ( 're-post2', 'repostads' );
  24.          ?>
  25.  
  26. I try to insert the query code in a sample page, and works fine, but when I insert in  functions.php don´t make nothing.
  27.  
  28. what´s the error?
  29.  
  30. thanks

La query la he probado y funciona correctamente, pero sin embargo cuando la inserto en functions.php y aunque el WP_CRON la reconoce, cuando se ejecuta el CRON no hace absolutamente nada.

¿Donde puede estar el error? ¿Alguna idea?

Un saludo.
  #2 (permalink)  
Antiguo 20/11/2013, 03:26
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 5 años, 1 mes
Puntos: 49
Respuesta: Problema Hook/Cron

Wayward, aparentemente la función "repostads()" no hace absolutamente nada. Bueno, asigna una cadena de texto a una variable ( "$querystr" ), y esta muere al acabar la ejecución de la función. Probablemente debas hacer un return de esa variable, o ejecutar la consulta con el objeto $wpdb que has invocado y que no utilizas. Dado que usas un hook con add_action, lo más probable sea lo último, que debas ejecutar la consulta. Echale un ojo a esto:

http://codex.wordpress.org/Class_Reference/wpdb#Run_Any_Query_on_the_Database
http://codex.wordpress.org/Class_Reference/wpdb#UPDATE_rows
  #3 (permalink)  
Antiguo 20/11/2013, 10:29
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 136
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema Hook/Cron

Hola.

La query que utilizo es esta. La he probado sin programar cron ni hook y funciona.

El problema es que cuando la programo para que se ejecute cada hora, no funciona.
Código PHP:
Ver original
  1. <?php
  2.   $querystr = "
  3.    UPDATE $wpdb->posts
  4.    INNER JOIN $wpdb->repost
  5.    ON $wpdb->posts.ID = $wpdb->repost.post_id
  6.    AND $wpdb->repost.DIA_FINAL >= NOW()
  7.    AND $wpdb->repost.ESTADO = 'OK'
  8.     SET $wpdb->posts.post_date = NOW()
  9.      ";
  10.  
  11.  $wpdb->query($querystr);
  12. ?>
  #4 (permalink)  
Antiguo 20/11/2013, 11:12
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 5 años, 1 mes
Puntos: 49
Respuesta: Problema Hook/Cron

En tu primer código, en la función que ejecutará wp_cron, no tienes puesta la línea clave:

Código PHP:
$wpdb->query($querystr); 
Asegúrate que aparece correctamente en el código que estás probando. Punto y a parte, debes saber que aunque tu programes el evento para que se ejecute cada hora, no lo hará a menos que alguien visite tu página 1 vez cada hora. Es decir, si no recibe ni una visita en 3 días el evento no se ejecutará, a pesar de haber indicado que se ejecute cada hora.

Si todo esto ya lo has comprobado y sigues sin encontrar el error, trata de testear más a fondo forzando la ejecución de wp_cron():

Código PHP:
<?php wp_cron() ?>
Y en vez de una consulta de actualización, cambia por ejemplo el meta de un post, o cualquier otra acción sencilla que pueda generar un resultado claro.

Etiquetas: cron, hooks
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:21.