wordpress-thumbnail.pngHá cerca de uma semana, sugeri um script que atualizava o campo de data dos links do WordPress, tornando possível a exibição do blogroll por ordem de atualização.

Porém, o Planeta Ubuntu Brasil ficava sempre em último lugar na lista, apesar de ser atualizado frequentemente. Observei então, que o feed traz as datas em português, impedindo na conversão por meio da função strtotime() (que espera datas em inglês).

Assim, alterei o script que sugeri aqui há uma semana: ele agora tenta identificar datas válidas no cabeçalho do feed e no primeiro item exibido. E, para atender casos como o do Planeta Ubuntu Brasil, procura datas tanto no formato RSS 2.0 quanto no formato RSS 1.0.

global $wpdb;
require_once(ABSPATH.'wp-includes/class-snoopy.php');
require_once(ABSPATH.'wp-includes/rss.php');
if (get_option('use_linksupdate')) {
	$link_rsses = $wpdb->get_col("SELECT link_rss FROM $wpdb->links WHERE link_rss <> ''");
	if ($link_rsses) {
		foreach ($link_rsses as $rssurl) {
			$feed = fetch_rss($rssurl);
			if ($feed) {
				$pubdate = $feed->channel['pubdate'];
				$lastbuilddate = $feed->channel['lastbuilddate'];
 
				$items = array_slice($feed->items, 0, 1);
				foreach ($items as $item) {
					$item_pubdate = $item['pubdate'];
					$item_dcdate = $item['dc']['date'];
				}
				$last_update = max(strtotime($pubdate), strtotime($lastbuilddate), strtotime($item_pubdate), strtotime($item_dcdate));
				$wpdb->query("UPDATE $wpdb->links SET link_updated = FROM_UNIXTIME($last_update) WHERE link_rss = '$rssurl'");
			}
		}
	}
}

Para tornar o script mais independente, decidi colar o código diretamente no WP-Crontrol, ao invés de incluí-lo como uma função no arquivo functions.php do meu tema.

Este trabalho, salvo expressamente indicado, está licenciado sob uma Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Brazil Licença. Termos e condições além do âmbito desta licença podem estar disponíveis em www.jlcarneiro.com.