13 de dezembro, 2016 | 2 | Marcelo Torres

Criando campos personalizados no WordPress com CMB2

CMB2 é um plugin para construção de campos personalizados que me ajuda muito no dia-a-dia, você pode criar qualquer tipo de campo com ele, desde simples campos de texto, até galerias de imagens, porém não com uma interface como o ACF e sim funcionando como um framework, mas ai você está me perguntando, porque vou digitar código se posso fazer tudo usando apenas o mouse? E eu te respondo, pra você não ficar refém das limitações que uma interface gráfica tem, sim eu sei que o ACF (to citando só ele porque é o mais famoso/usado) te da muitas opções, ele é bem flexível mesmo, eu mesmo já usei ele em alguns projetos por conta da agilidade que ele provê, mas em projetos mais complexos você poder manipular os campos como quiser é muito bem vindo. Além de tudo isso o CMB2 me deixa criar grupo de campos, campo que podem repetir e galerias de imagens sem precisar pagar nada, não é legal isso?

Como já dito, o plugin disponibiliza praticamente qualquer tipo de campo, nesta Wiki do github você pode ver todos:

Como esse link já explica muita coisa, não vou comentar cada um, acho desnecessário e cansativo, mas vamos usar o arquivo example-functions.php que mostra como configura cada campo. Para acessá-lo use a URL abaixo:

Então:

  • Faça o download, instale e ative o plugin CMB2;
  • Abra o functions.php cole o conteúdo do arquivo example-functions.php do seu tema e comece a brincadeira.

Eu costumo criar um arquivo separado organizado em uma pasta e depois faço o include no functions.php, faça assim se quiser, mas não vamos fazer desse jeito neste exemplo para simplificá-lo.

Veja abaixo como cada campo é exibido e funciona.

Resgatando os valores

Para resgatar os valores dos campos você pode usar a boa e velha função get_post_meta(), por exemplo:

$text = get_post_meta( get_the_ID(), '_yourprefix_text', true );

Onde _yourprefix_text é o id do campo que você definiu.

Campo do tipo file_list retornará um array com o id do arquivo(imagens, PDF…) e sua URL, por exemplo:

Array
(
    [11] => http://localhost/wordpress/4.6.1/wp-content/uploads/2016/11/Tulips.jpg
    [10] => http://localhost/wordpress/4.6.1/wp-content/uploads/2016/11/Penguins.jpg
    [9] => http://localhost/wordpress/4.6.1/wp-content/uploads/2016/11/Lighthouse.jpg
    [8] => http://localhost/wordpress/4.6.1/wp-content/uploads/2016/11/Koala.jpg
    [7] => http://localhost/wordpress/4.6.1/wp-content/uploads/2016/11/Jellyfish.jpg
    [6] => http://localhost/wordpress/4.6.1/wp-content/uploads/2016/11/Hydrangeas.jpg
    [5] => http://localhost/wordpress/4.6.1/wp-content/uploads/2016/11/Desert.jpg
    [4] => http://localhost/wordpress/4.6.1/wp-content/uploads/2016/11/Chrysanthemum.jpg
)

 

Outros campos com múltiplos valores como os checkboxes retornará os valores de forma semelhante. Para pegar um valor de um campo de grupo é da mesma forma, basta usar o id do campo de grupo que ele retornará um array multidimensional com os dados de todos os campos internos preenchidos, por exemplo:

Array
(
    [0] => Array
        (
            [title] => Título 1
            [description] => Descrição 1
            [image_id] => 9
            [image] => http://localhost/wordpress/4.6.1/wp-content/uploads/2016/11/Lighthouse.jpg
            [image_caption] => Legenda 1
        )

    [1] => Array
        (
            [title] => Título 2
            [description] => Descrição 2
            [image_id] => 10
            [image] => http://localhost/wordpress/4.6.1/wp-content/uploads/2016/11/Penguins.jpg
            [image_caption] => Legenda 2
        )

)

 

Em suma é isso, os outros campos retornam valores simples e outros com o do REST API eu não me aventurei ainda, em posts futuros vou fazer alguns exemplo práticos e “reais”, aguardem!

Última atualização: 24 janeiro, 2017 às 8:21 pm