meta

  • 04.02.2009
  • 11:18 PM
  • admin

Aprenda a criar/gerenciar custom fields 7

Feb4

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().

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.

assine o feed RSS dos comentários

7 comentários para este post

  1. ZackShinra says:

    Gostei e estou querendo implementar, mas não entendi uma coisa.

    Para “chamar” no post a meta_tag, eu tenho que fazer como abaixo, ou tem uma maneira mais simples?

    Nome da Pizzaria: ID, $key, true); ?>
    Endereço da Pizzaria: ID, $key, true); ?>

  2. ZackShinra says:

    Ops… errei:

    Quis dizer para colocar mais de uma cf, devo colocar:

    Endereço da Pizzaria: ID, $key, true); ?>
    Nome da Pizzaria: ID, $key, true); ?>

    ?

  3. ZackShinra says:

    Aff, o comentário não aceita código, para entender o que questiono veja:
    http://zackshinra.com/complemento-de-comentario/

  4. ZackShinra says:

    Grato pelo help via email Maikel, porém tenho outra dúvida:

    Seria possível criar uma condição if de um custom field?
    Exemplo, criei um cadastro de clientes com custom fields, e uma das cf’s é “Situação do Cliente”, onde as opões são “Ativo” e “Inativo”. Criei uma página onde é mostrado um resumo dos clientes, porém ele traz todos, gostaria de filtrar, para que aparecesse apenas os “Ativos”.

  5. Encontrei uma solução bem simples para o que eu precisava:

    nos argumentos do get_page, basta colocar:
    meta_key=sport&meta_value=basketball

    Sento “sport” e “basketball” exemplos. No meu caso eu usei:
    meta_key=situacao&meta_value=Ativo

    Achei por acaso na página http://www.dbswebsite.com/design/wordpress-reference/

  6. Olá Lauro, estou querendo criar também um cadastro de clientes e posteriormente gerar relatórios, talves vc poderia me dar alguma dica de como vc fez esta implementação utlizando custon fields.

  7. Boa tarde amigo , eu desenvolvi um site de revenda de carro , e gostaria de saber se é ultilizando o custon field que eu crio um sistema de busca tipo por (carro,moto,veiculo) outro campo ( ano ) e mais um campo (marca) , pq o wordpress so tem um sistema de busca simples , vc poderia me dar uma ajuda ai . Valeu fico no aguardo e show de bola o seu site 1

Deixe seu comentário

* campos obrigatórios