Publikowanie nowych postów w RSS z opóźnieniem

Ikona RSSWielu bloggerom zdarza się sytuacja, w której nowo napisany post są zmuszeni ponownie edytować z powodu niezauważonych wcześniej błędów, czy to ortograficznych, interpunkcyjnych, ale nie tylko. Bardzo często zdarza się jednak, że nasz blog wysłał już sygnał ping np. do FeedBurnera, który zdążył już zapisać pierwotną wersję wpisu we własnej pamięci cache. W taki przykry sposób nasze błędy mogą być widoczne przez jakiś czas w czytnikach RSS naszych odwiedzających. Dzisiaj dowiemy się w jaki sposób zapobiec takim incydentom, poprzez wprowadzanie opóźnienia publikacji nowych wpisów w kanale RSS.

Modyfikacja będzie ograniczać się tylko do dodania krótkiego kodu do jednego z plików naszego motywu. Odszukajmy więc pośród nich pliku functions.php. Dopiszmy do niego poniższy kod PHP.

function publish_later_on_feed($where) {
	global $wpdb;

	if ( is_feed() ) {
		// pobranie aktualnego czasu
		$now = gmdate('Y-m-d H:i:s');

		// wartosc opoznienia
		$wait = '5'; // liczby calkowite

		// http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
		$device = 'MINUTE'; // MINUTE, HOUR, DAY, WEEK, MONTH, lub YEAR (minuta, godzina, dzien, tydzien, miesiac, rok)

		// dodanie zmian to zmiennej WordPressa $where
		$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
	}
	return $where;
}

add_filter('posts_where', 'publish_later_on_feed');

Uwaga: Jeżeli Twój motyw nie zawiera pliku functions.php, wystarczy, że utworzysz go od nowa. Nie zapomnij jednak o znacznikach <?php i ?> kolejno na początku i na końcu pliku.

Wartość opóźnienia możemy w bardzo łatwy sposób modyfikować. Wystarczy zmienić wartość zmiennej $wait podświetlonej na listingu.

Od tej chwili każdy napisany post zostanie opublikowany w kanale RSS dopiero po pięciu minutach, przez które możemy do woli edytować treść naszego wpisu.

  • Blip
  • Twitter
  • Flaker
  • OSnews.pl
  • MySpace
  • Facebook
  • Wykop
  • Google Bookmarks
  • del.icio.us

2 Responses to “Publikowanie nowych postów w RSS z opóźnieniem”


Pozostaw odpowiedź

CommentLuv Enabled