custom fields no wordpress
domingo, 3 de agosto de 2008Aprenda a criar/gerenciar custom fields
29 jul 2008 Desenvolvimento, Plugins, Template Tags, Wordpress - Geral
http://www.maikelneris.com.br/aprenda-a-criargerenciar-custom-fields/
Pouca gente conhece o poder dos custom fields; a maioria nem sabe pra que serve. Pois saiba que este recurso poderoso do Wordpress pode transformar o seu simples blog em um CMS completo.
Os custom fields também são chamados de meta-data; informações complementares sobre o seu post. O princípio básico de um cf (daqui pra frente vou referenciar custom fields assim) é que ele possui um valor armazenado em uma propriedade/campo/nome, assim como uma coluna de um banco de dados. Na prática, significa que você pode criar um novo campo para o seu post, e dar a ele o valor que você quiser.
Por exemplo: digamos que você queira inserir no seu post sobre uma pizzaria da sua cidade o endereço da pizzaria. Seria fácil inserir esse endereço no corpo do post, mas dessa forma você não poderia dar uma formatação diferenciada e nem recuperar apenas este campo para referências futuras. Usando cf, você apenas escreveria um nome para o campo (por exemplo, “endereco”) e um valor (”Avenida Wordpress, 2455″), dessa forma:
E esta operação pode ser repetida para quantas informações você quiser, sem nenhum limite.
RECUPERANDO CF
Mas só isso não garante que essa informação será inserida junto ao post. É necessário inserir em seu tema uma template tag do WP responsável por “chamar” o cf para junto do post. Existem duas delas.
A primeira é a the_meta(). Ao inserir essa template tag (por exemplo, no arquivo single.php, dentro do loop) serão exibidos todos os cf do post em uma lista não ordenada (ul), dessa forma:
<ul class=”post-meta”>
<li><span class=”post-meta-key”>Endereço:</span> Avenida Wordpress, 2455</li>
<li><span class=”post-meta-key”>Melhor sabor:</span> Calabresa</li>
</ul>
Nesse exemplo, inserimos dois cf no post. Os mesmos são exibidos na lista, em qualquer quantidade que você inserir no post. Usando as classes que são criadas, você pode mudar o visual dessa lista dentro do post.
A outra função usada para inserir cf no post é a get_post_meta(). Ela requer 3 parâmetros:
get_post_meta($post_id, $key, $single);
* $post_id é o ID do post que você quer para recuperar o cf. Logo, você pode chamar uma campo personalizado em qualquer lugar no seu tema, basta saber o ID do post. Dentro do loop, use $post->ID para recuperar o ID do post atual;
* $key é a string contendo o nome exato do cf inserido no post;
* $single só tem dois valores possíveis: TRUE ou FALSE. Se o valor for TRUE, então apenas um valor será retornado; caso o valor seja FALSE, todos os cf do post serão retornados em um array.
Logo, para fazer a chamada de apenas um cf, usando o exemplo já mostrado:
Endereço da Pizzaria: <?php $key=”endereco”; echo get_post_meta($post->ID, $key, true); ?>
E é simples assim. Mas pra que você iria usar isso?
* para inserir informações que existem em todos os seus posts;
* quando desenvolver algo específico para um cliente;
* para fazer verificações de propriedades booleanas para cada post (veja um exemplo disso aqui).
Existem, claro, muitas outras formas de uso; basta observar a sua necessidade.
MORE FIELDS, A REVOLUÇÃO
O plugin More fields permite criar um novo painel dentro da sua área de postagem para a inserção de cf. O painel pode ter um título, e você pode escolher se ele fica na barra lateral ou abaixo do post, junto de “categorias”, “pingback” etc…
Depois de criar o painel, você adiciona os campos, que são os mesmo campos de custom fields, com a diferença de que não é preciso digitar o nome/valor, apenas o valor do campo, pois o nome sempre vai ficar visível.
Dá pra criar textfield, select box, textarea, option button e outros campos comuns de formulários, de forma a dar apenas opções limitadas ao utilizador, evitando respostas erradas.
Por exemplo: digamos que você criou algo lá no seu blog que mostra “sim” ou não” para um post. No modo tradicional, todas vez que você fosse criar um post, teria que escolher no combo box o nome do custom field (”opcao_post”, digamos) e DIGITAR o valor (”s” ou “n”). Usando o plugin, você cria esse painel e dá o nome do campo (”opcao_post”), o nome para EXIBIÇÃO (”Escolha uma opção”) e o tipo do campo. Nesse caso você poderia fazer por check box, para checar valores booleanos. Nesse caso específico, ele vai retornar “on” ou “off” na tabela post_meta do WP.
Depois é só tratar os valores no código com get_post_meta().
Esse é um exemplo do painel do More fields que usamos no Jornal A TRIBUNA:
E este é um exemplo de como o painel fica na área de escrita do post:
Acredite: esse painel facilidade e MUITO a operação de inclusão/alteração de custom fields. E quebra um galho para o desenvolvedor, que pode incluir isso em seu projeto e entregar para o cliente algo com bastante usabilidade, sem que ele dependa de ficar “escrevendo” o nome para cada cf existente.
Obrigado ao Carlos, que deu a dica para a escrita desse post.



