Que nós adoramos o WordPress, você provavelmente já sabia. No entanto, nem todos os usuários do WordPress se sentem confortáveis em editar seus blogs e/ou construírem códigos interessantes que melhorem as funcionalidades de seus blogs. No entanto, e conforme já mostramos em outros Tutoriais WordPress, existem pequenos truques e dicas para podem ajudá-lo a aumentar o nível de funcionalidade do seu blog facilmente através do ficheiro functions.php, o ficheiro que rege as funcionalidades do seu WordPress. Alguns Temas WordPress já incluem algumas destas funcionalidades, enquanto que muitos outros não incluem nenhuma delas.

Se está interessado em tornar suas páginas e artigos mais funcionais e principalmente únicos e diferentes dos seus concorrentes, estes novos truques podem dar-lhe uma ajuda incrível nesse sentido. Os truques de hoje têm como objetivo melhorar sua área de artigos em seu blog WordPress, com o intuito de melhorar a experiência de seus usuários e a usabilidade de seu blog.

wordpress

1. AUMENTAR DIMENSÃO DO EXCERTO DE ARTIGOS

Este truque permite-lhe modificar a dimensão do excertos de seus artigos na homepage do seu blog, o qual você poderá modificar a seu belo prazer. Copie e cole o código para dentro do ficheiro functions.php do seu template, e modifique o valor 75 para um outro que mais lhe agrade. Esse valor representa o número de carateres.

add_filter('excerpt_length', 'my_excerpt_length');
function my_excerpt_length($len) { return 75; }

2. DATAS EM ESTILO TWITTER

A grande maioria das pessoas não faz ideia de que o WordPress tem uma função nativa para mostrar as datas das postagens num formato idêntico ao do Twitter, do tipo “Há 2 minutos atrás”. Este truque permite-lhe implementar esse estilo de datas em seus artigos, devendo ser substituido pelo sistema de datas que tem atualmente em seus artigos, no ficheiro single.php.

Publicado <?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' atrás';

3. MOSTRAR THUMBNAILS DOS ARTIGOS NOS RSS FEEDS

A funcionalidade the_post_thumbnail() introduzida no WordPress 2.9, é extremamente útil para mostrar os thumbnails (miniaturas) de imagens anexadas aos seus artigos. Infelizmente não existe nenhuma função nativa para mostrar os thumbnails nos RSS feed de um blog WordPress, pelo que teremos de usar um pequeno truque para conseguir fazê-lo. Copie e cole o seguinte código para dentro do ficheiro functions.php do seu template, guarde-o, e os thumbnails dos seus artigos irão começar a aparecer no seu RSS feed.

// show post thumbnails in feeds
function diw_post_thumbnail_feeds($content) {	global $post;	if(has_post_thumbnail($post->ID)) {		$content = '<div>' . get_the_post_thumbnail($post->ID) . '</div>' . $content;	}	return $content;}add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds');add_filter('the_content_feed', 'diw_post_thumbnail_feeds');

4. LIMITAR A PESQUISA APENAS A TÍTULOS DE ARTIGOS

Você pode adicionar este código ao seu ficheiro functions.php para limitar a pesquisa interna do seu blog apenas a títulos de artigos.

function __search_by_title_only( $search, &$wp_query )
  {
      if ( empty($search) )
      return $search; // skip processing - no search term in query
      $q =& $wp_query->query_vars;

      // wp-includes/query.php line 2128 (version 3.1)
      $n = !empty($q['exact']) ? '' : '%';
      $searchand = '';
      foreach( (array) $q['search_terms'] as $term ) {
      $term = esc_sql( like_escape( $term ) );
      $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
      $searchand = ' AND ';
  }
  $term = esc_sql( like_escape( $q['s'] ) );
  if ( empty($q['sentence']) && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] )
  $search .= " OR ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
  if ( !empty($search) ) {
      $search = " AND ({$search}) ";
      if ( !is_user_logged_in() )
          $search .= " AND ($wpdb->posts.post_password = '') ";
      }
      return $search;
  }
add_filter( 'posts_search', '__search_by_title_only', 10, 2 );

5. MOSTRAR UM NÚMERO INCREMENTADO EM CADA ARTIGO

Este truque permite-lhe mostrar um número incrementado em cada um dos seus artigos, e a sua implementação é muito simples. Caso não saiba para que isto serve, imagine que você gostaria de colocar em seu blog o número correspondente de cada artigo, sendo que esse número fosse incrementando automaticamente sempre que você fazia um novo artigo? Primeiro, copie e cole o seguinte código para o ficheiro functions.php do seu template:

function updateNumbers() {
    global $wpdb;
    $querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ";
    $pageposts = $wpdb->get_results($querystr, OBJECT);
    $counts = 0 ;
    if ($pageposts):
    foreach ($pageposts as $post):
    setup_postdata($post);
    $counts++;
    add_post_meta($post->ID, 'incr_number', $counts, true);
    update_post_meta($post->ID, 'incr_number', $counts);
    endforeach;
    endif;
}

add_action ( 'publish_post', 'updateNumbers' );
add_action ( 'deleted_post', 'updateNumbers' );
add_action ( 'edit_post', 'updateNumbers' );

Depois de gravar seu ficheiro, poderá mostrar seu número incrementado usando o seguinte código. Não esqueça que este código tem de estar em seu ciclo (loop) de artigos.

<?php echo get_post_meta($post->ID,'incr_number',true); ?>

6. EXCLUIR ARTIGOS DO SEU RSS FEED

Gostava de excluir alguns dos seus artigos do seu RSS Feed? Esta função tem dois parâmetros interessantes a ter em consideração. No primeiro parâmetro $where você dá uma extensão da string SQL, que será tida em consideração a partir do ID. Entre as aspas, você tem de definir os IDs dos posts, que gostaria de ver removidos dos seus RSS Feeds.

function fb_post_exclude($where, $wp_query = NULL) {
	global $wpdb;
	if ( !$wp_query )
		global $wp_query;
	if ($wp_query->is_feed) {
		// exclude post with id 40 and 9
		$where .= " AND $wpdb->posts.ID NOT IN (40, 9)";
	}
	return $where;
	}
add_filter( 'posts_where','fb_post_exclude', 1, 2 );

7. REDIRECCIONAR USUÁRIO PARA UM ARTIGO QUANDO UMA PESQUISA RETORNA APENAS UM RESULTADO

Não seria interessante, quando um leitor do seu blog realiza uma pesquisa e você tem apenas um resultado possível, redireccionar automaticamente esse usuário para esse resultado/artigo? Copie e cole o seguinte código para dentro do ficheiro functions.php do seu template WordPress.

add_action('template_redirect', 'single_result');
function single_result() {
	if (is_search()) {
		global $wp_query;
		if ($wp_query->post_count == 1) {
			wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
		}
	}
}

8. CRIAR META DESCRIÇÃO DE ARTIGOS AUTOMATICAMENTE

Ao adicionar o seguinte código ao ficheiro functions.php do seu blog, ele irá criar automaticamente a meta descrição dos seus artigos, a partir da função the_content. Tenha a certeza de que cola este código no ficheiro header.php do seu template WordPress ou o truque não irá funcionar corretamente.

function create_meta_desc() {
	global $post;
	if (!is_single()) { return; }
	$meta = strip_tags($post->post_content);
	$meta = strip_shortcodes($post->post_content);
	$meta = str_replace(array("\n", "\r", "\t"), ' ', $meta);
	$meta = substr($meta, 0, 125);
	echo "<meta name='description' content='$meta' />";
}
add_action('wp_head', 'create_meta_desc');

9. SUBSTITUIR PALAVRAS AUTOMATICAMENTE POR LINKS DE AFILIADO

Se você utiliza o seu blog para ganhar dinheiro com programas de afiliados, por exemplo, você poderá usar este truque para substituir automaticamente determinadas palavras dos seus textos por links de afiliado. Copie e cole o seguinte código no ficheiro functions.php do seu template. Não esqueça de colocar as palavras e links respectivos no código.

function replace_text_wps($text){
	$replace = array(
	// 'WORD TO REPLACE' => 'REPLACE WORD WITH THIS'
	'dinheiro' => '<a href="http://www.escoladinheiro.com">dinheiro</a>',
	'wordpress' => '<a href="http://www.escolawp.com">wordpress</a>'
	);
	$text = str_replace(array_keys($replace), $replace, $text);
	return $text;
}

add_filter('the_content', 'replace_text_wps');
add_filter('the_excerpt', 'replace_text_wps');

10. ADICIONAR LINK “LER MAIS” NO FINAL DOS EXCERTOS

Adicione este código ao ficheiro functions.php do seu template e ele irá adicionar um permalink “Ler Mais” no final da função the_excerpt, ou seja, depois dos excertos que você tem na homepage.

function excerpt_readmore($more) {
	return '... <a href="'. get_permalink($post->ID) . '" class="readmore">' . 'Ler Mais' . '</a>';
}
add_filter('excerpt_more', 'excerpt_readmore');

11. ARTIGOS POPULARES NA BARRA LATERAL

Criar um widget para mostrar os artigos populares do seu blog na sua barra lateral sem usar plugins é extremamente fácil. Copie e cole o seguinte código para dentro do seu ficheiro sidebar.php. Se precisar de alterar o número de artigos mostrados, altere o valor 5 que se encontra no final da linha 3 de código.

<h2>Artigos Populares</h2>
<ul>
	<?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5");
	foreach ($result as $post) {
		setup_postdata($post);
		$postid = $post->ID;
		$title = $post->post_title;
		$commentcount = $post->comment_count;
		if ($commentcount != 0) { ?>
			<li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
			<?php echo $title ?></a> {<?php echo $commentcount ?>}</li>
	<?php } } ?>
</ul>

12. LISTAR ARTIGOS FUTUROS

Você costuma escrever artigos em antecipação no seu blog e gostava de mostrar os títulos desses próximos artigos aos seus leitores? O WordPress permite listar os artigos futuros, e para o conseguir em seu blog, simplesmente copie e cole o seguinte código para o local onde gostava que essa listagem aparecesse:

<div id="zukunft">
	<div id="zukunft_header"><p>Próximos Artigos</p></div>
	<?php query_posts('showposts=10&post_status=future'); ?>
	<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

	<div>
		<p><strong><?php the_title(); ?></strong><?php edit_post_link('e',' (',')'); ?><br />
		<span class="datetime"><?php the_time('j. F Y'); ?></span></p>
	</div>

	<?php endwhile; else: ?><p>Nenhum artigo próximo.</p><?php endif; ?>
</div>

Até Já!