Como exibir o número de seguidores do Twitter no blog

Encontrei esta dica no WpRecipes.com e achei interessante compartilhar com vocês, afinal o número de seguidores do Twitter está tão importante quanto o número de assinantes do feed, será??!?!!?! Discussões a parte, se você possui um bom número de seguidores e quiser exibir a quantidade no seu blog, siga os passos:

1. Copie o código abaixo para o arquivo functions.php do seu tema. Caso o arquivo não exista basta criá-lo e copiar o código.

function string_getInsertedString($long_string,$short_string,$is_html=false){
if($short_string>=strlen($long_string))return false;
$insertion_length=strlen($long_string)-strlen($short_string);
for($i=0;$i<strlen($short_string);++$i){
if($long_string[$i]!=$short_string[$i])break;
}
$inserted_string=substr($long_string,$i,$insertion_length);
if($is_html && $inserted_string[$insertion_length-1]=='<'){
$inserted_string='<'.substr($inserted_string,0,$insertion_length-1);
}
return $inserted_string;
}
function DOMElement_getOuterHTML($document,$element){
$html=$document->saveHTML();
$element->parentNode->removeChild($element);
$html2=$document->saveHTML();
return string_getInsertedString($html,$html2,true);
}
function getFollowers($username){
$x = file_get_contents("http://twitter.com/".$username);
$doc = new DomDocument;
@$doc->loadHTML($x);
$ele = $doc->getElementById('follower_count');
$innerHTML=preg_replace('/^<[^>]*>(.*)<[^>]*>$/',"\\1",DOMElement_getOuterHTML($doc,$ele));
return $innerHTML;
}

2. Agora copie o código abaixo substituindo o texto “USERNAME” pelo seu nome de usuário no Twitter e cole-o no seu tema onde desejar, no cabeçalho (header.php), no menu lateral (sidebar.php) ou até mesmo no rodapé (footer.php).

<?php echo getFollowers("USERNAME")." seguidores"; ?>

Simples assim.

Adicione automaticamente conteúdo no editor de posts

Este é uma boa dica para quem sempre adiciona um mesmo conteúdo em todos posts. Por exemplo, se eu tivesse um blog que fizesse análise de produtos e que no final do post eu sempre escrevesse:

  • Modelo: ABC | Fabricante: XYZ | Site: www.xyz.com

Para que este conteúdo sempre seja adicionado ao post quando clicar na opção Adicionar novo post no WordPress, basta incluir o código abaixo dentro do arquivo functions.php do tema em uso.

  1. add_filter( 'default_content', 'my_editor_content' );
  2. function my_editor_content( $content ) {
  3. $content = "Modelo: | Fabricante: | Site: ";
  4. return $content;
  5. }
  6. ?>

Desta forma, sempre que você for escrever um novo post já estará escrito "Modelo: | Fabricante: | Site: ". É claro que existe outras formas automatizadas para realizar tal função, mas não acredito que nenhuma delas seja tão simples como esta.

Como ocultar a versão do WordPress

Desde o WordPress 2.5 (se não me falhe a memória), a Automattic removeu o código da versão do sistema do header.php, e adicionou-o às chamadas que a Template Tag faz. Na prática, isso impede que os usuários removam a indicação da versão do WordPress usada, algo muito importante para a geração de dados de uso da ferramenta. Na página gerada no navegador, o código da versão fica assim:

Mesmo antes dessa mudança estrutural, eu já mantinha tal informação no cabeçalho do blog, justamente para ajudar os desenvolvedores que, a bem da verdade, não cobram um tostão pelo excelente produto que fazem e melhoram constantemente. Ocorre que, além desse ato nobre, exibir a versão do WordPress que se está usando tem um efeito colateral ruim e até perigoso: expõe seu domínio a ataques.

Muitas das atualizações do WordPress são lançadas para corrigir brechas de segurança. Essas brechas, quando tornadas públicas, são usadas por pessoas mal intencionadas para causar danos em blogs, gerais ou específicos. No caso dos blogs gerais, ou seja, um ataque feito sem destinatário específico, os crackers utilizam a exibição da versão para limitar o ataque, tornando-o mais efetivo usando menos “força bruta”. Ao invés de tentar o ataque em todos os blogs WordPress que o programa encontrar, este se limita a agir contra aqueles que usam a versão afetada ou anterior.

A solução, pacífica e benéfica aos bloggers e à Automattic, é manter seu WordPress atualizado. Eles (a Automattic) fazem de tudo para manter o sistema imune a falhas, portanto, cabe ao usuário manter seu sistema atualizado também. Com a nova sistemática, onde os desenvolvedores indicam quais arquivos foram modificados, a atualização é ainda mais simples e rápida.

Dito tudo isso, trago a dica prometida no título do post. Para não ficar dúvidas, repito, agora em termos claros: evitem usar essa dica, mantenham o WordPress atualizado. Existem cenários bastantes específicos na qual a ocultação da versão faz sentido; para todo o resto, o ideal é deixá-la lá.

A dica é simples. Abra (ou crie, caso não tenha) o arquivo functions.php, do tema, e acrescente a seguinte linha nele:

remove_action('wp_head', 'wp_generator');

O remove_action incide sobre a função wp_generator, responsável por “puxar” e exibir a versão do WordPress, e impede sua execução. Simples assim. Como o functions.php é carregado antes do tema, a mágina acontece.

Outra dica, essa mais completa, é a instalação do plugin Secure WordPress. Além de fazer tal remoção automaticamente, ele também acaba com outras referências a versões, em outros pontos do WordPress, como no feed, e traz outras defesas, como a não-exibição de erros no login, o acréscimo de um index.html virtual no diretório de plugins, entre outras.

Usem com moderação e responsabilidade.

[Via WP Recipes]

Como exibir tags em um menu dropdown

Esta dica eu encontrei no blog Hack WordPress e achei muito interessante, por isso resolvi compartilhar com vocês. Exibir as tags é uma maneira muito eficaz de encontrar todos os posts de um determinado assunto, o problema está no fato de que todo blog possui uma quantidade enorme de tags e é impossível organizar um espaço para exibí-las todas de uma só vez. Pensando em como resolver isso, Jean-Baptiste Jung teve a idéia de colocar todas as tags em um menu dropdown, da mesma forma como muita gente já exibe suas categorias e o arquivo. Para isso Jean desenvolveu duas novas funções e para implementá-las você deverá copiar o código abaixo no arquivo functions.php do seu tema (se o arquivo não existir você deverá criá-lo).

<?php
function dropdown_tag_cloud( $args = '' ) {
	$defaults = array(
		'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
		'exclude' => '', 'include' => ''
	);
	$args = wp_parse_args( $args, $defaults );

	$tags = get_tags( array_merge($args, array('orderby' => 'count', 'order' => 'DESC')) ); // Always query top tags

	if ( empty($tags) )
		return;

	$return = dropdown_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args
	if ( is_wp_error( $return ) )
		return false;
	else
		echo apply_filters( 'dropdown_tag_cloud', $return, $args );
}

function dropdown_generate_tag_cloud( $tags, $args = '' ) {
	global $wp_rewrite;
	$defaults = array(
		'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC'
	);
	$args = wp_parse_args( $args, $defaults );
	extract($args);

	if ( !$tags )
		return;
	$counts = $tag_links = array();
	foreach ( (array) $tags as $tag ) {
		$counts[$tag->name] = $tag->count;
		$tag_links[$tag->name] = get_tag_link( $tag->term_id );
		if ( is_wp_error( $tag_links[$tag->name] ) )
			return $tag_links[$tag->name];
		$tag_ids[$tag->name] = $tag->term_id;
	}

	$min_count = min($counts);
	$spread = max($counts) - $min_count;
	if ( $spread <= 0 )
		$spread = 1;
	$font_spread = $largest - $smallest;
	if ( $font_spread <= 0 )
		$font_spread = 1;
	$font_step = $font_spread / $spread;

	// SQL cannot save you; this is a second (potentially different) sort on a subset of data.
	if ( 'name' == $orderby )
		uksort($counts, 'strnatcasecmp');
	else
		asort($counts);

	if ( 'DESC' == $order )
		$counts = array_reverse( $counts, true );

	$a = array();

	$rel = ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : '';

	foreach ( $counts as $tag => $count ) {
		$tag_id = $tag_ids[$tag];
		$tag_link = clean_url($tag_links[$tag]);
		$tag = str_replace(' ', '&nbsp;', wp_specialchars( $tag ));
		$a[] = "\t<option value='$tag_link'>$tag ($count)</option>";
	}

	switch ( $format ) :
	case 'array' :
		$return =& $a;
		break;
	case 'list' :
		$return = "<ul class='wp-tag-cloud'>\n\t<li>";
		$return .= join("</li>\n\t<li>", $a);
		$return .= "</li>\n</ul>\n";
		break;
	default :
		$return = join("\n", $a);
		break;
	endswitch;

	return apply_filters( 'dropdown_generate_tag_cloud', $return, $tags, $args );
}
?>

Agora é necessário adicionar o código que irá exibir o menu dropdown, que em geral é colocado no menu lateral. Para isso adicione o código abaixo no arquivo sidebar.php do seu tema ou no local de sua preferência.

<select name="tag-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
	<option value="#">Lista de Tags</option>
	<?php dropdown_tag_cloud('number=0&order=asc'); ?>
</select>

Para testar o código e poder mostrá-la em funcionamento, eu resolvi adicioná-la ao tema Migthy, que está disponível a demostração e o download na seção temas aqui do pBlog.