Blogroll por ordem de atualização (3)
Publicado em Tecnologia, em 09/08/2010 às 13h20 (última atualização em 16/08/2010 às 10h34)Marcadores: bookmarks, código, plugins, webdesign, WordPress

Outro dia, um amigo meu perguntou por que alguns posts 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:
- distribuir material de apoio para meus alunos;
- ajudar aqueles que não têm muita prática com informática com dicas;
- manter, num local de fácil acesso, pequenos macetes, dicas e endereços;
- guardar textos, mensagens, reportagens e notícias interessantes; e
- expressar minha opinião sobre algum assunto interessante.
Portanto, aviso que este post 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'"); } } }
Blogroll por ordem de atualização (3)está licenciado sob uma Licença Creative Commons Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Brasil. Termos e condições além do âmbito desta licença podem estar disponíveis nos Termos de uso em jlcarneiro.com.

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.