Você já precisou de um campo e não encontrou no WordPress? Teve que utilizar dos campos personalizados? Ou então instalou um plugin? É meu amigo, seus problemas acabaram, a solução é utilizar Meta Box.
Meta boxes são campos, que ficam no dashboard do WordPress, em posts, páginas e custom posts. De uma maneira mais amigável para o usuário. Meta boxes são altamente configuráveis, podem ser utilizadas para alterar a aparência, guardar informações, criar listas dinâmicas, galerias de imagens, em fim serve para atender a suas necessidades.
Diferente de usar plugins para adicionar, um Meta box, o seu código vai ficar mais limpo, pois você vai estar fazendo com que sua aplicações solucione apenas o necessários. Ficará confiável e ‘visível’ ao usuário, melhor que utilizar dos campos personalizados.
Bom então algo tão variável de utilizar, deve necessitar de um código monstruoso? Errado, para adicionar Meta box ao nosso tema, utilizamos de uma função nativa do WordPress, add_meta_box( ) . Vamos ver como funciona.
Imaginando que temos o seguinte problema, precisamos ter no nosso post, um campo para adicionar, uma cor ao título, mas cada post deve ter um título com uma cor diferente.
Vamos primeiro ver quais os parâmetros, nossa função add_meta_box recebe:

add_meta_box( $id, $title, $callback, $post_type, $context, $priority, $callback_args );
  • $id: Este é um ID único atribuído à sua caixa de meta. Ela deve ter um prefixo único e ser HTML válido. [String – Obrigatório]
  • $title: O título da caixa do meta box. [String – Obrigatório]
  • $callback: A função de retorno de chamada que exibe a saída da sua caixa de meta. Já vamos ver ela melhor. [String – Obrigatório]
  • $post_type: Onde será exibido o Meta Boxes. Exemplos (‘post’, ‘page’, ‘link’, ou ‘custom_post ).  [String ou Array – Opcional, por padrão fica null]
  • $contexto: Onde na página o Meta box deve ser mostrado. As opções disponíveis são  ‘normal’, ‘side’ e ‘advanced’. [String – Opcional, padrão ‘advanced’]
  • $priority:  Prioridade de inserção da caixa em relação as demais, opções ‘high’ ou ‘low’. [String]
  • $callback_args: Determina a passagem de parâmetros a função callback [Matriz – Opcional]

Depois de conhecer os parâmetros que nossa função recebe, podemos iniciar nossa aplicação. Vamos utilizar nosso arquivo ‘function.php’, nele vamos iniciar criando uma função.

add_action( 'add_meta_boxes', 'init_meta_box_color' );
function init_meta_box_color(){
}

Está função servirá como uma chamada para nosso Meta box, conhecida no WordPress como ‘actions’. Pois não podemos sair criando Meta box a qualquer momento, precisamos respeitar a ordem do WordPress, por isso vamos utilizar essa função de chamada.

add_action( 'add_meta_boxes', 'init_meta_box_color' );
function init_meta_box_color(){
    add_meta_box( $id, $title, $callback, $post_type, $context, $priority, $callback_args );
}

Agora sim podemos adicionar o nosso Meta box, vamos ajustar os parâmetros conforme nossa necessidade.

add_action( 'add_meta_boxes', 'init_meta_box_color' );
function init_meta_box_color(){
    add_meta_box( 'id_meta_color', 'Escolha uma cor para o título', 'meta_color', 'post', , 'normal', null );
}

O Meta box já foi criado, e está em exibição no nosso tema, agora vamos colocar um conteúdo para ele. Vamos criar uma função, com o nome que colocamos no parâmetro de callback, que no nosso caso foi ‘meta_color’.

function meta_color(){6
    ?>
    
    
    
    
    
    
    
    <?php
}
add_action( 'save_post', 'save_meta_color' );
function save_meta_color( $post_id  ){
    if(isset( $_POST['field_color'] ) ){
	   update_post_meta( $post_id , 'field_color', $_POST['field_color'] );
    }
}