Marcelo Mesquita

Apenas mais um desenvolvedor WordPress

Criando Meta Boxes

Na versão 2.7 o WordPress estreiou as meta boxes, que são aquelas caixinhas arrastáveis que estão presente no dashboard, na área de edição de posts e páginas além de outros locais na área administrativa do WordPress.

Muitas vezes, na criação de plugins que interajem com os posts ou páginas, é necessário adicionar um novo campo à area de edição. Afim de manter a formatação do WordPress, a criação de uma meta box é o caminho mais limpo e fácil. Também é possível adicionar as metaboxes as páginas dos seus plugins, mas é uma tarefa um pouco mais complicada, então vamos deixar para outro artigo.

add_meta_box($id, $title, $callback, $page, $context=’advanced’, $priority=’default’, $callback_args=null);

Essa função é a responssável por adicionar a meta box a uma determinada página. O $id é o identificador único para o HTML, é com esse identificador que o WordPress manipulará sua metabox. Já o $title é o título da metabox, $callback é a sua função que ficará responssável pelo carregamento do conteúdo dentro da metabox e $page é a página onde a sua metabox será carregada (‘page’, ‘post’, ‘link’, etc). Os outros parâmetros são opcionais: $context define o local da página onde sua metabox será carregada por padrão (‘normal’, ‘advanced’, ‘side’) enquanto $priority diz o posicionamento padrão da metabox dentro do $context (‘high’ ou ‘low’), e por fim $callback_args que permite a passagem de argumentos à metabox.

Por exemplo, para criar uma metabox que mostre uma frase de incentivo (não consegui pensar em algo mais simples e útil) na parte de cima do sidebar da tela de edição de posts, ficaria assim:

add_meta_box('incentivador', 'Incentivador', 'incentive_me', 'post', 'side', 'high');

Não se esqueça de criar a função ‘incentive_me’ em seu plugin.

Agora só falta adicionar um gancho para a chamada da metabox:

add_action('do_meta_boxes', 'incentivador_metabox');

Onde ‘incentivador_metabox’ é a função que conterá o seu add_meta_box.

O código final ficaria assim:

<?php
/*
Plugin Name: MetaBox: Incentivador
Description: Mostra uma frase
Version: 0.1
Author: Marcelo Mesquita
Author URI: http://www.marcelomesquita.com/
*/

add_action('do_meta_boxes', 'incentivador_metabox');

function incentivador_metabox()
{
    add_meta_box('incentivador', 'Incentivador', 'incentive_me', 'post', 'side', 'high');
}

function incentive_me()
{
    $frases = array(
        'Você consegue!',
        'Faça seu melhor!',
        'Tudo é possível!'
    );

    print $frases[rand(0, 3)];
}
?>

Para saber mais acesse a Referência da Função add_meta_box

10 Comments

  • responder

    WordPress Video

    6 anos atrás

    WordPress Video…

    With thanks for yet another first-rate article. I am always doing research for super WordPress advices to recommend to my own readers. Thank you for creating this article. It’s precisely what I was in search of. Truly good post….

  • responder

    Nilson

    6 anos atrás

    Poderia me falar como fazer um query para pegar um determinado conteudo do Meta Box.
    Criei um metabox que é um checkbox, agora não sei como fazer a query para visualizar ele no site.

    • responder

      Marcelo Mesquita

      6 anos atrás

      Oi Nilson,
      vai depender de como você fez para salvar as informações desse metabaox. Sugiro utilizar as funções update_option e get_option do próprio WordPress, assim você não precisa se preocupar em montar queries.

      Abraço.

  • responder

    Venessa Nita

    6 anos atrás

    Hey clever points.. now why did not i consider those? Off topic slightly, is that this web page sample merely from an bizarre installation or else do you use a custom-made template. I use a webpage i’m seeking to improve and effectively the visuals is likely one of many key issues to complete on my list.

  • responder

    Charles Paz

    5 anos atrás

    Olá Marcelo parabéns pelo conteúdo.
    gostei da forma que está exposto.

  • responder

    josé

    3 anos atrás

    Este plugin é do post do daiwp, ta copiando e não cita o autor, pior fala que você que fez.
    http://daviwp.com/criando-meta-boxes-no-wordpress/

    • responder

      Marcelo Mesquita

      3 anos atrás

      Fala José,

      Concordo com você… copiar post sem citar a fonte não pode.

      É melhor avisar o Davi pra parar de fazer isso. Dá uma olhada no “código final” do post dele:

      Att.

  • responder

    tercio

    2 anos atrás

    ola, por favor, me ajudem numa coisa

    quero fazer uma função que salve ao mesmo tempo duas meta-boxes

    como posso fazer?
    grato

    • responder

      Marcelo Mesquita

      2 anos atrás

      Tercio,

      A action para salvar os dados das metaboxes é ‘save_post’. O funcionamento é parecido com a action ‘do_meta_boxes’, você define uma função para ser executada sempre que o post é salvo.

      add_action( ‘save_post’, ‘minha_funcao’ );

      Para saber mais, acesse: http://codex.wordpress.org/Plugin_API/Action_Reference/save_post

      • responder

        tercio

        2 anos atrás

        Ok, entendi… consegui resolver o problema, obrigado. E ah, parabéns pelo ótimo site

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *