Back-End

23 set, 2009

Criando meta boxes no WordPress

Publicidade

A versão 2.7 o WordPress trouxe as meta boxes,
que são aquelas caixinhas arrastáveis que estão presentes 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 interagem com os posts ou
páginas, é necessário adicionar um novo campo à área de edição. A fim 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 meta boxes às 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 responsá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 meta box. Já o $title
é o título da meta box, $callback é a sua função que ficará responsável
pelo carregamento do conteúdo dentro da meta box, e $page é a página onde
a sua meta box será carregada (‘page’, ‘post’, ‘link’, etc). Os outros
parâmetros são opcionais: $context define o local da página onde sua
meta box será carregada por padrão (‘normal’, ‘advanced’, ‘side’)
enquanto $priority diz o posicionamento padrão da meta box dentro do
$context (‘high’ ou ‘low’), e por fim $callback_args que permite a
passagem de argumentos à meta box.

Por exemplo, para criar uma meta box 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 meta box:

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