De multe ori se întâmplă ca imediat după ce apeși butonul „Publică” să observi o greșeală gramaticală, o imagine lipsă sau un link greșit în text. Chiar dacă modifici rapid articolul pe site, agregatele de știri și cititoarele RSS s-ar putea să fi preluat deja versiunea inițială cu erori, salvând-o în cache-ul abonaților tăi.
Soluția ideală pentru a preveni această situație este introducerea unei perioade de grație: o amânare automată de câteva minute între momentul în care articolul apare pe blog și momentul în care este distribuit în fluxul RSS (feed).
Cum amâni livrarea articolelor în RSS prin functions.php
Poți obține acest comportament filtrând interogarea bazei de date cu ajutorul filtrului posts_where. Adaugă următorul fragment în fișierul functions.php al temei tale:
function publish_later_on_feed( $where ) {
global $wpdb;
// Verificăm dacă cererea curentă este pentru un flux RSS
if ( is_feed() ) {
// Obținem data și ora curentă în format UTC / GMT
$now = gmdate( 'Y-m-d H:i:s' );
// Intervalul de așteptare (ex: 10 minute)
$wait = '10'; // valoare întreagă
// Unitatea de măsură a timpului (MINUTE, HOUR, DAY etc.)
$device = 'MINUTE';
// Adăugăm condiția SQL la clauza WHERE
$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
}
return $where;
}
add_filter( 'posts_where', 'publish_later_on_feed' );
Cum funcționează acest filtru
- Funcția verifică prin
is_feed()dacă cererea HTTP provine de la un cititor de fluxuri RSS. - Calculează diferența de timp dintre data publicării articolului (
post_date_gmt) și momentul curent ($now). - Dacă diferența este mai mică de 10 minute (sau valoarea setată în variabila
$wait), articolul este exclus temporar din feed. - De îndată ce au trecut cele 10 minute, articolul devine vizibil în fluxul RSS cu toate corecturile finale deja efectuate pe site.