Como dar suporte a Widgets em seu tema WordPress

March 6th, 2010

Os widgets nos temas WordPress permitem aos usuários personalizar seus temas, incluir novos recursos sem conhecer ou precisar editar a marcação HTML.

Logo, se você for desenvolver um tema para compartilha-lo considere o suporte a widgets. Com esse suporte o WordPress permitirá aos usuários organizar sua sidebar com os widgets desejados, veja:

Antes de registrar sua sidebar para suportar os widgets é preciso pensar em como desenvolve-la. A sugestão do WordPress é que ela seja feita com lista não ordenada, a tag <ul>. Um exemplo:

[php]
<ul id=”sidebar”>
<?php if ( function_exists( ‘dynamic_sidebar’ ) ) dynamic_sidebar(); ?>
</ul>
[/php]

No exemplo acima, utilizamos a função dynamic_sidebar() para informar ao WordPress que essa área da sidebar é dinâmica, com suporte a widgets. Cada widget inserido será englobado pela tag <li>. Por esse motivo utilizamos uma tag <ul> para comporta-los.

Após esse passo, o WordPress já considera sua sidebar como dinâmica, com suporte aos widgets. O próximo passo é registrar sua sidebar através do código abaixo:

[php]
<?php
if ( function_exists(‘register_sidebar’) )
register_sidebar();
?>
[/php]

O código acima deve ser colocado no arquivo functions.php. Se o seu tema ainda não tem esse arquivo, crie-o. Tal arquivo deve residir na raiz do diretório do seu tema.

Definido sua sidebar como dinâmica e fazendo seu registro, você poderá fazer uso dos widgets do WordPress e de terceiros, inseridos através de plugins, arrastando os desejados ou removendo os desnecessários. Os widgets se localizam na administração do WordPress na página Widgets sob o menu Aparência. Observe:

Em sua sidebar dinâmica é possível ter ou não widgets. Nesse último caso, ou seja, quando não houver widgets a serem exibidos no seu tema, você pode exibir algum conteúdo padrão. Veja o procedimento.

[php]
<ul id=”sidebar”>
<?php if ( !function_exists( ‘dynamic_sidebar’ ) or !dynamic_sidebar() ) : ?>
<li>
<p>Conteúdo mostrado quando não houver widgets a serem exibidos.</p>
</li>
<?php endif; ?>
</ul>
[/php]

Utilizando o código acima, o WordPress exibirá seu conteúdo padrão quando nenhum widget for arrastado para sua sidebar dinâmica na administração ou quando todos eles foram removidos.

Como ativar o recurso de lixeira para Arquivos de Mídia do WordPress

January 31st, 2010

Por padrão o novo recurso de lixeira do WordPress é ativado na interface de gerenciamento de posts, páginas e comentários, assunto abordado no post Como usar o novo recurso de lixeira do WordPress. É possível utilizar esse mesmo recurso na interface de gerenciamento de Arquivos de Mídia. No entanto precisamos ativar essa opção.

Ativamos o recurso de lixeira para Arquivos de Mídia do WordPress definindo uma constante chamada MEDIA_TRASH com o valor true no arquivo wp-config.php. Observe:

[php]
define( ‘MEDIA_TRASH’, true );
[/php]

Definido a constante a interface se modifica como podemos observar nas imagens ilustrativas abaixo.

Interface de gerenciamento de Arquivos de mídia com o recurso de lixeira ativado

Exemplo da interface de gerenciamento de Arquivos de mídia com o recurso de lixeira ativado

Interface de gerenciamento de Arquivos de mídia com o recurso de lixeira desativado

Exemplo da interface de gerenciamento de Arquivos de mídia com o recurso de lixeira desativado

Para aqueles que não estão familiarizados com constantes em PHP, segue uma definição:

Uma constante é um identificador (nome) para um único valor. Como o nome sugere, esse valor não pode mudar durante a execução do script (exceção às constantes mágicas, que não são constantes de verdade). As constantes são sensíveis ao caso por padrão. Por convenção, o nomes de constantes são sempre em maiúsculas. http://www.php.net/manual/pt_BR/language.constants.php

Como usar o novo recurso de lixeira do WordPress

January 23rd, 2010

Você tem certeza que deseja excluir? Essa é uma pergunta comum realizada por aplicações web e sistemas operacionais. E convenhamos que é um tanto quanto incoveniente. Mas é necessária para evitar que arquivos e conteúdos sejam excluídos por acidente.

A partir do WordPress 2.9 não iremos nos deparar mais com essa pergunta e também não perderemos nossos conteúdos por acidente. Um recurso de lixeira foi implementado e se desejado será possível recuperar posts, páginas e comentários excluídos.

O novo recurso de lixeira do WordPress pode ser personalizado ou desativado. Ambas opções são realizadas através da quantidade de dias desejados para os conteúdos permanecerem na lixeira. Isto é, se configuro para o conteúdo ficar nenhum dia, 0 (zero), estou na verdade desativando tal recurso.

No arquivo de configurações do WordPress, o wp-config.php localizado na raiz de sua instalação, defino a constante EMPTY_TRASH_DAYS com os dias desejados. Observe:

[php]
define( ‘EMPTY_TRASH_DAYS’, 0 ); // Desativo o recurdo de lixeira do WordPress

define( ‘EMPTY_TRASH_DAYS’, 7 ); // Os conteúdos serão guardados durante 7 dias na lixeira

define( ‘EMPTY_TRASH_DAYS’, 365 ); // Os conteúdos serão guardados durante 1 ano na lixeira
[/php]

O WordPress determina 30 dias como o valor padrão da constante EMPTY_TRASH_DAYS. O que significa dizer que os posts, páginas e comentários excluídos poderão ser recuperados em até 30 dias.

Observe nas imagens abaixo como a interface do WordPress no gerenciamento de posts, páginas e comentários se comporta com o novo recurso de lixeira ativado e desativado.

Exemplo da interface de gerenciamento de posts com o recurso de lixeira ativado

Exemplo da interface de gerenciamento de posts com o recurso de lixeira desativado

Exemplo da interface de gerenciamento de páginas com o recurso de lixeira ativado

Exemplo da interface de gerenciamento de páginas com o recurso de lixeira desativado

Exemplo da interface de gerenciamento de comentários com o recurso de lixeira ativado (Clique para ampliar)

Exemplo da interface de gerenciamento de comentários com o recurso de lixeira desativado (Clique para ampliar)

Como utilizar as novas tags de template para exibir miniaturas, thumbnail, nos temas WordPress

January 5th, 2010

Se buscarmos no Google pelos termos: post thumbnail, wordpress post thumbnail, post thumbnail wordpress, dentre outros, teremos milhares de resultados. O que demonstra a tamanha procura pelo assunto. Os resultados são soluções diversas para implementar um simples recurso: vincular uma miniatura de imagem, diga-se thumbnail, a um post.

Com a chegada do WordPress 2.9 ficou simples, fácil e elegante vincular ao post desejado uma miniatura de imagem. Há quatro funções específicas para o assunto: has_post_thumbnail, the_post_thumbnail, get_post_thumbnail_id e get_the_post_thumbnail. Ambas estão localizadas no seguinte arquivo: wp-includes/post-thumbnail-template.php.

Suporte ao recurso de miniatura de post

Para implementar o suporte deste recurso no WordPress é necessário que a função add_theme_support() com o parâmetro ‘post-thumbnails’ seja chamada no arquivo functions.php do tema em uso. Para ser mais específico, inclua o seguinte código:

[php]
<?php
if ( function_exists( ‘add_theme_support’ ) ) :
add_theme_support( ‘post-thumbnails’ );
endif;
?>
[/php]

No arquivo functions.php do seu tema. Se ele ainda não existe, crie e salve-o na pasta do tema. Observe que antes de chamarmos a função add_theme_support verificamos se ela está disponível no WordPress em uso através da função function_exists.  Como a nova função está disponível somente a partir da versão 2.9 garantimos compatibilidade com versões anteriores.

Chamado a função no arquivo functions.php do tema, teremos na tela de edição de posts o recurso Miniatura do Post como demonstrado na imagem abaixo.

Miniatura do Post na tela de edição de Posts.

Clicado em Configurar miniatura é exibido a tela de envio de imagens. Após o envio da imagem informe ao WordPress que gostaria de usa-la como miniatura clicando em Usar como miniatura. Observe:

Exemplo de uso do recurso Usar como miniatura

Feito isso o recurso Miniatura do Post é preenchido com a imagem definida; além da opção remover a imagem. Veja:

Miniatura do Post preenchida

Nas páginas do seu tema onde pretende exibir as miniaturas faça uso das funções has_post_thumbnail e the_post_thumbnail. A primeira verifica se há uma miniatura para o post em exibição; a segunda exibirá a miniatura com a devida marcação HTML.

Embora tenho dito que há quatro funções para se trabalhar com esse assunto, duas delas são usadas internamente. São elas: get_post_thumbnail_id e get_the_post_thumbnail. A primeira é utilizada pela função has_post_thumbnail e a segunda pela função the_post_thumbnail. Então, digamos que há duas funções internas e outras duas externas.

Forma de uso da função the_post_thumbnail.

[php]
<?php
if ( function_exists( ‘the_post_thumbnail’ ) :
the_post_thumbnail();
endif;
?>
[/php]

No exemplo acima verificamos se a função the_post_thumbnail está disponível para em seguida utiliza-la. Com seu uso será exibido uma marcação HTML através da tag img para exibir a miniatura do post.

[html]
<img width="640" height="480" title="título" alt="" src="[...]/wp-content/uploads/2009/12/1262731176983.jpg"/>
[/html]

Observe também um exemplo prático de uso da função has_post_thumbnail.

[php]
<?php if ( has_post_thumbnail() ) : ?>
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail(); ?>
</a>
<?php endif; ?>
[/php]

As possibilidades de uso da função the_post_thumbnail

Através de seus dois parâmetros opcionais, a função the_post_thumbnail lhe permite exibir miniaturas de posts de forma personalizada. Sendo possível definir o tamanho desejado e diversos atributos.

Quanto a definição de tamanho da miniatura do post há diversas possibilidades. Utilizar os tamanhos definidos na configuração de mídia de sua instalação WordPress ou especificar valores personalizados.

[php]
the_post_thumbnail(); // Sem parâmetro é igual a Thumbnail

the_post_thumbnail( ‘thumbnail’ ); // Utiliza os valores definidos para o tamanho de imagem miniatura

the_post_thumbnail( ‘medium’ ); // Utiliza os valores definidos para o tamanho de imagem média

the_post_thumbnail( ‘large’ ); // Utilizar os valores definidos para o tamanho de imagem grande

the_post_thumbnail( array(150,110) );// Utiliza valores personalizados; neste exemplo 150 de largura e 110 de altura.
[/php]

Os atributos possíveis de serem definidos e que serão utilizados na marcação HTML da tag img são: src, class, alt e title. Para o primeiro é utilizado a localização da imagem; para o segundo uma classe personalizada com o tamanho da imagem, assim: attachment-post-thumbnail, attachment-post-medium, entre outras. O atributo alt é formado pela legenda da imagem e o title com o título.

Um exemplo prático de como definir atributos através da função the_post_thumbnail.

[php]
the_post_thumbnail( ‘thumbnail’, array( ‘class’ => ‘nome-da-classe’ ) );
[/php]

Indo além com avançadas configurações

O WordPress é extremamente flexível e isso me agrada muito. Temos incríveis possibilidades de personalização e com as miniaturas de posts não seria diferente. No seu arquivo functions.php, que deve residir no diretório do seu tema, é possível especificar o tamanho desejado para as miniaturas, os thumbnails, através da função set_post_thumbnail_size. Assim:

[php]
set_post_thumbnail_size( 75, 75 ); // Define o tamanho desejado para os thumbnails.

set_post_thumbnail_size( 75, 75, true ); // Define o tamanho desejado para os thumbnails  e ativa a opção de "crop"
[/php]

É possível também registrar nomes personalizados para o tamanho de imagens, ou seja, em vez de usar os nomes proprietários: thumb, thumbnail, medium ou large, podemos definir nossos próprios nomes. Por exemplo:

[php]
add_image_size( ‘listagem-de-posts-home’, 150, 150 );
add_image_size( ‘listagem-de-posts-busca’, 300, 300 );
add_image_size( ‘post-em-destaque’, 500, 500 );
[/php]

Atente-se que a função add_image_size deve ser chamada no arquivo functions.php

A confusão de nomenclatura

Durante o desenvolvimento do WordPress 2.9 as funções relacionadas a miniatura de post, thumbnail, foram nomeadas utilizando o termo image. Posteriormente na versão final as funções foram renomeadas sendo alterada o image por thumbnail.

Logo, o correto é the_post_thumbnail e has_post_thumbnail do que the_post_image ou has_post_image, respectivamente.

Como percebemos as possibilidades em relação a miniatura de posts são diversas, use a criatividade, pesquise e compartilhe novas descobertas conosco.

WordPress 2.9.1

January 4th, 2010

Lançado o WordPress 2.9.1 que corrige uma série de problemas relacionados ao agendamento de posts e o não processamento correto de pingbacks devido imcompatibilidades com alguns hosts.

Se tiver enfrentando problemas com o WordPress 2.9 considere atualiza-lo. Mais detalhe no post sobre o lançamento da versão 2.9.1.

WordPress 2.9

January 3rd, 2010

Em 19 de dezembro de 2009 a esperada versão 2.9 do WordPress foi lançada. Matt Mullenweg fez uma abordagem sobre os novos recursos e a Cátia Kitahara o traduziu num post na comunidade brasileira de WordPress.

Nós do Apiki WordPress, faremos posts dedicados aos principais recursos dessa nova versão abordando a forma de uso na perspectiva do usuário final e do desenvolvedor.

Enquanto isso, assista um pequeno vídeo resumindo algumas das coisas legais sobre esta nova versão:

Só mais um blog do WordPress?

January 2nd, 2010

Apiki WordPress, um blog dedicado exclusivamente ao WordPress. Uma iniciativa da Apiki para você desenvolvedor, curioso, estudante, gerente de projetos, designer, tomador de decisão e usuário final.

Por sermos especializados nessa ferramenta e termos iniciativas em Software livre decidimos colaborar ainda mais com toda comunidade e disponibilizar tutoriais, dicas e muito conteúdo sobre essa ferramenta de blog e plataforma de publicação.

Em 2009 nos unimos ao iMasters o que resultou na criação e lançamento de diversos plugins WordPress. Todos gratuitos, internacionalizados em dois idiomas: português do Brasil e inglês, desenvolvidos com as melhores práticas e sob a licença GPL.

Neste ano de 2010, queremos nos unir a você. Acreditamos poder agregar valor com conteúdo de qualidade, dicas, hacks, entrevistas e serviços especializados e muito mais envolvendo o WordPress.

Vem conosco!