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!