Articles

Como obter o título atual da página em WordPress

Por vezes queremos obter o título atual da página, que é exibido em <title> tag. Aqui eu quero dizer a página em geral, não a “página” do WordPress. Temos várias funções do WordPress que podem ajudar como:

  • get_the_title(): para obter o título atual do post/página/qualquer tipo de post
  • single_cat_title(): para obter o título atual da categoria. Existem funções de irmãos para tags e termos também: single_tag_title() e single_term_title()
  • get_bloginfo(): para obter o nome do blog
  • etc.

Utilizar essas funções é ótimo, mas elas têm algumas desvantagens:

  • As funções são específicas para páginas particulares como um único post/página, categoria/etiqueta, … páginas. Mas nós podemos ter muitos tipos de páginas no WordPress como: 404 páginas, página de resultados de pesquisa, página de arquivo, ou mesmo página virtual.
  • O título exibido diferentemente em temas: você pode usar um tema que tenha título no formato Post Title | Blog Name, mas outro tema pode usar apenas Post Title. Você pode fazer uma combinação das funções acima para conseguir o título correto, mas isso não será usado amplamente para outros temas.
  • Or você pode definir o título de várias maneiras com plugins SEO

Neste post, vou usar um truque simples que pode resolver esses problemas rapidamente.

Tenho a certeza que todos nós estamos familiarizados com a função wp_title(), usamos frequentemente esta função em header.php ficheiro, como este:

<title><?php wp_title( '|', true, 'right' ); ?></title>

para mostrar o título da página (deve usar apenas esta função para mostrar o título da página, caso contrário o seu site pode não ser compatível com plugins SEO ou causar problemas de desempenho).

O truque é mudar o 2º parâmetro $echo de true para false para obter o valor do título da página actual:

$title = wp_title( '|', false, 'right' );

Aqui está um exemplo onde esta técnica é útil. Vamos mostrar um botão do Twitter. Eu vou usar outra técnica legal para obter a URL da página atual:

global $wp;$link = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );$text = wp_title( '|', false );printf( '<iframe allowtransparency="true" frameborder="0" scrolling="no" src="https://platform.twitter.com/widgets/tweet_button.html?url=%s&text=%s&count=horizontal"></iframe>', urlencode( $link ), rawurlencode( $text ));

Utilho atualmente o script acima (com algumas adições para o Facebook como, botões do Google+) para os meus sites. E está funcionando muito bem em páginas de arquivo onde as funções do WordPress não são muito úteis.