Blogroll por ordem de atualização (3)

wordpress.png

Outro dia, um amigo meu perguntou por que alguns artigos tinham um caráter tão técnico. Peço desculpas, é porque um dos objetivos iniciais deste site é armazenar macetes e dicas para mim mesmo:

organizar dicas, tutoriais e endereços para consulta posterior;

Portanto, aviso que este artigo interessa mais àqueles que gostam de programação. Aqueles que o lerem e não compreenderem, não se preocupem: é apenas um registro pessoal para futuras consultas e não contém nenhuma informação de uso geral.

Em 2008, escrevi um script que atualiza o campo de data dos links, para contornar o já conhecido problema com a exibição do blogroll por ordem de atualização no WordPress.

Recentemente, verifiquei que os script havia parado de funcionar. Como parece que as versões recentes do WordPress não têm mais a variável use_linksupdate, aproveitei para adaptar o código às diferentes versões e formatos de feed, que armazenam a data em campos distintos:

global $wpdb;
require_once(ABSPATH.'wp-config.php');
include_once(ABSPATH.'wp-includes/class-snoopy.php');
include_once(ABSPATH.'wp-includes/rss.php');
$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']; // Netscape RSS 0.91
			$lastbuilddate = $feed->channel['lastbuilddate']; // Netscape RSS 0.91
			$updated = $feed->channel['updated']; // Atom 1.0
			$items = array_slice($feed->items, 0, 1);
			foreach ($items as $item) {
				$item_pubdate = $item['pubdate']; // RSS 2.0
				$item_dcdate = $item['dc']['date']; // RSS 2.0 Dublin Core
				$item_updated = $item['updated']; // Atom 1.0
			}
			$last_update = max(strtotime($pubdate), strtotime($lastbuilddate), strtotime($updated), strtotime($item_pubdate), strtotime($item_dcdate), strtotime($item_updated));
			$wpdb->query("UPDATE $wpdb->links SET link_updated = FROM_UNIXTIME($last_update) WHERE link_rss = '$rssurl'");
		}
	}
}

2 comentários sobre “Blogroll por ordem de atualização (3)

  1. ZeLuiz, cabra bom!

    Esse para eu compreender teria que ter uma aula presencial… Para fuçar teria que ter tempo, o que está raro ultimamente.

    um abraço.