O WordPress possui uma forma de adicionar informações extras em publicações. Dessa forma é possível incrementar suas postagens desde dados complementares quanto ações mais complexas.
Esses campos são chamado Campos Personalizados ou Custom Fields.
Você consegue criar campos personalizados direto no painel do WordPress. Basta ir em Posts > Adicionar Novo. E no final da página você terá uma tela assim:
Caso ela não esteja aparecendo, basta ir na parte superior a direita, e clicar em Opções de Tela. E depois marcar a opção Campos personalizados.
Com a opção do campo personalizado aparecendo, você terá o campo Nome (chave), e o Valor. Basta definir um nome e o seu valor correspondente e depois clicar em Adicionar campo personalizado.
Dessa forma você pode criar quantos campos personalizados quiser.
Quando for criar um novo post, existirá a opção da chave que você criou. Você poderá selecionar e adicionar um valor associado a ele.
Agora você precisa exibir essa informação nas suas publicações. Para isso você precisará acessar o arquivo que deseja exibir e dentro do Loop adicionar a função the_meta();
Vamos usar o código do tema twentyseventeen, mais precisamente no arquivo single.php
wp-content/themes/twentyseventeen/single.php
<?php /** * The template for displaying all single posts * * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post * * @package WordPress * @subpackage Twenty_Seventeen * @since 1.0 * @version 1.0 */ get_header(); ?> <div class="wrap"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php /* Start the Loop */ while ( have_posts() ) : the_post(); get_template_part( 'template-parts/post/content', get_post_format() ); the_meta(); // If comments are open or we have at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) : comments_template(); endif; the_post_navigation( array( 'prev_text' => '<span class="screen-reader-text">' . __( 'Previous Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Previous', 'twentyseventeen' ) . '</span> <span class="nav-title"><span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '</span>%title</span>', 'next_text' => '<span class="screen-reader-text">' . __( 'Next Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Next', 'twentyseventeen' ) . '</span> <span class="nav-title">%title<span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ) . '</span></span>', ) ); endwhile; // End of the loop. ?> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); ?> </div><!-- .wrap --> <?php get_footer();
Veja como é exibido:
O WordPress gerar uma lista não ordenada com todos os campos personalizado no post, onde você adicionar a função the_meta().
<ul class='post-meta'> <li><span class='post-meta-key'>Fonte:</span> Blog MX Cursos</li> </ul>
Vimos como criar um campo personalizado pelo painel nativamente e atribuir dinamicamente a um post. Já para informações complementares o processo é bem interessante. Muitas vezes você deseja personalizar mais a criação desses campos personalizados, principalmente se você precisa organizar a forma de publicar informações extras e precisa exibir em um momento especifico.
Podemos então criar essa opção para se exibido pelo tema e dessa forma exibir onde desejamos.
Vamos continuar utilizando o tema twentyseventeen, que vem por padrão no WordPress.
Nesse tema, existe uma pasta chamada inc. Iremos criar um arquivo nessa pasta com nome de custom-fields.php.
wp-content/themes/twentyseventeen/inc/custom-fields.php
Depois do arquivo criado, vamos incluir no arquivo functions.php no tema. Iremos adicionar no final do arquivo:
require get_parent_theme_file_path( '/inc/custom-fields.php' );
Usamos a função get_parent_the_file_path para retornar o caminho do tema pai. Essa função é útil se você deseja trabalhar com temas filhos. Aliás, temos aqui no blog o artigo Criando e customizando Temas Filhos caso queira aprender mais sobre esse assunto.
No arquivo custom-fields.php, criaremos uma função que será responsável por exibir um campo de formulário na criação/edição do Post.
No nosso exemplo vamos colocar um campo para inserir o código do vídeo do youtube
<?php function create_form_custom_field($post) { $code_youtube = get_post_meta($post->ID, 'code_youtube', true); $html = '<label for="code_youtube">Código Youtube: </label>'; $html .= '<input type="text" name="code_youtube" value="'.$code_youtube.'" />'; echo $html; }
Agora precisamos informar ao WordPress que queremos exibir essa informação do campo de edição do Post. Para isso precisamos definir o Meta Box, que será o box que irá conter os valores a serem exibidos para realizar a criação/edição no Post.
<?php function create_form_custom_field($post) { $code_youtube = get_post_meta($post->ID, 'code_youtube', true); $html = '<label for="">Código Youtube: </label>'; $html .= '<input type="text" name="code_youtube" value="'.$code_youtube.'" />'; echo $html; } function add_custom_meta_box() { add_meta_box( 'custom-field-code', 'Configuração Extra', 'create_form_custom_field', 'post' ); }
Definimos agora o meta box e precisamos informar isso ao WordPress para que ele seja exibido.
Para isso iremos usar action add_meta_boxes. Caso queira saber mais sobre actions (ganchos) WordPress, leia esse artigo: Entendendo e utilizando as actions (ganchos) no WordPress.
<?php function create_form_custom_field($post) { $code_youtube = get_post_meta($post->ID, 'code_youtube', true); $html = '<label for="">Código Youtube: </label>'; $html .= '<input type="text" name="code_youtube" value="'.$code_youtube.'" />'; echo $html; } function add_custom_meta_box() { add_meta_box( 'custom-field-code', 'Configuração Extra', 'create_form_custom_field', 'post' ); } add_action( 'add_meta_boxes', 'add_custom_meta_box');
Pronto! Agora se você acessar no admin a parte de criar ou editar um post, será exibido o campo que criamos no final da página.
Já criamos como deve ser exibido o campo, criamos o metabox e informamos ao WordPress para exibir o campo que criamos.
Agora será necessário salvar esse valor que criamos para ser exibido no post.
<?php function create_form_custom_field($post) { $code_youtube = get_post_meta($post->ID, 'code_youtube', true); $html = '<label for="">Código Youtube: </label>'; $html .= '<input type="text" name="code_youtube" value="'.$code_youtube.'" />'; echo $html; } function add_custom_meta_box() { add_meta_box( 'custom-field-code', 'Configuração Extra', 'create_form_custom_field', 'post' ); } add_action( 'add_meta_boxes', 'add_custom_meta_box'); function save_form_custom_field($post_id) { if( isset($_POST['code_youtube'] ) ) { update_post_meta( $post_id, 'code_youtube', sanitize_text_field( $_POST['code_youtube'] ) ); } }
Agora precisamos informar ao WordPress que queremos usar essa função que criamos para salvar a informação quando for salvo o post.
Para isso usaremos add_action com chave save_post
<?php function create_form_custom_field($post) { $code_youtube = get_post_meta($post->ID, 'code_youtube', true); $html = '<label for="">Código Youtube: </label>'; $html .= '<input type="text" name="code_youtube" value="'.$code_youtube.'" />'; echo $html; } function add_custom_meta_box() { add_meta_box( 'custom-field-code', 'Configuração Extra', 'create_form_custom_field', 'post' ); } add_action( 'add_meta_boxes', 'add_custom_meta_box'); function save_form_custom_field($post_id) { if( isset($_POST['code_youtube'] ) ) { update_post_meta( $post_id, 'code_youtube', sanitize_text_field( $_POST['code_youtube'] ) ); } } add_action( 'save_post', 'save_form_custom_field');
Pronto! Agora os dados serão salvos ao salvar seus posts.
Agora precisamos exibir essa informação no post.
Acessaremos o arquivo single.php
<?php /** * The template for displaying all single posts * * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post * * @package WordPress * @subpackage Twenty_Seventeen * @since 1.0 * @version 1.0 */ get_header(); ?> <div class="wrap"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php /* Start the Loop */ while ( have_posts() ) : the_post(); ?> <?php if($code_youtube = get_post_meta(get_the_ID(), 'code_youtube', true)) : ?> <iframe width="560" height="315" src="https://www.youtube.com/embed/<?php echo $code_youtube; ?>" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe> <?php endif;?> <?php get_template_part( 'template-parts/post/content', get_post_format() ); // If comments are open or we have at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) : comments_template(); endif; the_post_navigation( array( 'prev_text' => '<span class="screen-reader-text">' . __( 'Previous Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Previous', 'twentyseventeen' ) . '</span> <span class="nav-title"><span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '</span>%title</span>', 'next_text' => '<span class="screen-reader-text">' . __( 'Next Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Next', 'twentyseventeen' ) . '</span> <span class="nav-title">%title<span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ) . '</span></span>', ) ); endwhile; // End of the loop. ?> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); ?> </div><!-- .wrap --> <?php get_footer();
Pronto!
Dessa forma você pode personalizar seus posts de acordo com suas necessidades. Você pode criar por exemplo um site de imobiliária e adicionar as opções do imóvel com campos personalizados, como quantidade quartos, etc.
Gostou do post? Tem dúvidas? Deixe seu comentário abaixo e compartilhe este post.
Nos últimos anos, testemunhamos uma revolução na forma como os sites são criados, impulsionada pelo…
A animação 3D tem sido uma forma poderosa de contar histórias e criar experiências visuais…
Nos últimos anos, a inteligência artificial (IA) tem revolucionado a forma como criamos e editamos…
Nos últimos anos, a integração da inteligência artificial (IA) na criação de sites tem revolucionado…
Nos últimos anos, a edição de vídeo evoluiu rapidamente com o avanço da tecnologia, e…
A dublagem de filmes desempenha um papel fundamental na indústria cinematográfica, permitindo que obras de…
This website uses cookies.
Ver comentários
Uma pergunta, aonde esses dados ficam salvos no banco de dados ? não consigo achar..
Matheus, esse dados ficam salvos na tabela wp_postmeta
Olá, gostei dessa aula. E como eu faria para adicionar 2 campos, sendo um para a url do IMDB e outro campo para a avaliação do IMDB? Daí quando for exibido a classificação de um filme, por exemplo, 7,7, ao clicar nesse valor levaria para o link referente. POR FAVOR, me mostrem um exemplo disso. Desde já grato.
Olá! Boa tarde. Sou iniciante, instalei e ativei o Advanced Custom Fields, no entanto não está sendo exibido a caixinha/box Campos Personalizados no menu lateral do meu wordpress...E da forma manual em opções também não aparece como opção a marcar de campos personalizados. Nem uma, nem outra...preciso de ajuda. Eu agradeço desde já!