En determinadas circunstancias puede ser interesante retrasar la publicación de una entrada de WordPress en el feed RSS. O sea, que una vez publicada la entrada en la web, no se publique hasta pasado X tiempo en el feed RSS.
¿Cómo lo podemos conseguir? Hasta ahora habíamos usado siempre el plugin RSS Manager, pero esta semana buscábamos algo más ligero, con menos funcionalidades y que no tuviese opciones de configuración para que nadie lo pudiese tocar fácilmente.
Buscando información sobre el tema encontramos la publicación de Natzir Turrado de 14 de febrero de 2012 «Retrasar la publicación del RSS en WordPress« que sigue estando vigente hoy en día y con un código que sigue funcionando. Solo hay que añadir al functions.php del tema las siguientes líneas de código:
function retrasar_feed($where) {
global $wpdb;
if ( is_feed() ) {
$now = gmdate('Y-m-d H:i:s');
$wait = '10';
$device = 'MINUTE';
$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
}
return $where;
}
add_filter('posts_where', 'retrasar_feed');
Este código lo que hace es retrasar la publicación del feed en 10 minutos frente a la publicación en la página. Si queremos cambiar el intervalo de tiempo hasta la publicación en el feed, solamente hay que cambiar la varibale $device y sustituir ‘MINUTE’ por cualquiera de los valores aceptables para la misma:
- FRAC_SECOND (microseconds) -> Fracciones de segundos (microsegundos)
- SECOND -> Segundos
- MINUTE -> Minutos
- HOUR -> Horas
- DAY -> Días
- WEEK -> Semanas
- MONTH -> Meses
- QUARTER -> Trimestres
- YEAR -> Años
Y luego ajustar el número de la variable $wait que es el número de unidades de la medida anterior que esperará. En el ejemplo son $wait = '10'
y $device = 'MINUTE'
, por lo que esperará 10 minutos, si ponemos $wait = '1'
y $device = 'HOUR'
esperará 1 hora. Y así se puede hacer cualquier combinación que se os ocurra.
Espero que esto también le ayude a alguien más.
Créditos imágenes: Shutterstock – Ryan Jorgensen – Jorgo