Blogroll por ordem de atualização (2)
24 de dezembro de 2008 às 01:56 (atualizado em 9 de março de 2010 às 13:08)Publicado em Tecnologia
Marcadores: bookmarks, código, cron, dicas, plugins, scripts, WordPress
Há 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.

em
em
em


Nenhum comentário até o momento.