wordpress.png
12ª parte (de um total de 12) da série Domando o 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. :wink:

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.