0

Como Adicionar Informação Extra nos Posts do WordPress

Neste artigo vou mostrar como adicionar outras informações aos seus posts no WordPress. Vamos começar vendo os campos personalizados, muito úteis quando você é o desenvolvedor e único blogger. Depois vou mostrar como criar os campos personalizados pré-definidos. Funciona da mesma maneira que os campos personalizados padrões, mas você pode determinar o nome e adicionar uma descrição para cada um, dessa maneira os usuários vão saber o que escrever em cada um. A última coisa que vou mostrar são as “custom taxonomies”, disponíveis a partir do WordPress 3.0.

Campos Personalizados

Os campos personalizados do WordPress permitem adicionar informações diferentes ao seu post. Quando se usa os campos personalizados, você pode exibir esses valores diretamente no seu tema de uma maneira que seus posts sempre tenham um layout parecido mesmo com diferente bloggers. Era muito comum o uso dos campos personalizados para adicionar miniaturas aos posts, mas hoje em dia temos a Imagem destacada para isso. Mas ainda podemos usar os campos personalizados para informações diferentes como, por exemplo, o nível de dificuldade de um tutorial.

Existem duas maneiras de se fazer isso: a maneira padrão e a personalizada.

Campos Personalizados Padrão

A maneira padrão para se utilizar os campos personalizados é bastante simples. Quando você cria um novo post, você pode ver depois do Resumo e dos trackbacks uma área chamada Campos personalizados. É uma tela como essa:

Campos Personalizados Padrão

Campos Personalizados Padrão

Como você pode ver, é possível adicionar quantos campos você desejar. Você deve definir o nome do campo e o valor do mesmo. Depois é só adicionar esse campo no modelo do seu tema usando a função get_post_meta($post_id, $key, $single). Aqui está um pequeno exemplo no caso do nível de dificuldade do tutorial:

<?php if ( get_post_meta($post->ID, 'dificuldade', true) ) : ?>
        Dificuldade: <?php echo get_post_meta($post->ID, 'dificuldade', true); ?>
<?php endif; ?>

Mas você pode simplificar esse processo.

Campos Personalizados Pré-definidos

No arquivo functions.php do seu tema, você pode pré-definir quais campos você quer para o seu tema. É claro que você pode implementar isso de diferentes maneiras, eu vou mostrar uma delas. Então abra o arquivo functions.php e siga os próximos passos.

Passo 1 – Definição dos Campos

Vamos começar definindo os campos que desejamos. Vamos fazer isso criando um array com as informações de cada campo. Nesse exemplo vou criar dois campos, o nível de dificuldade e um video tutorial (usando o ID do video no YouTube). Os exemplos estão em inglês.

    $theme_metaboxes = array(
       "difficulty" => array (
            "name"      => "difficulty",
            "default"   => "3",
            "label"     => __('Tutorial Difficulty Level', 'mytheme'),
            "type"      => "text",
            "desc"      => __('Enter the difficulty level here. Use only integer numbers from 0 (zero) to 5 (five).', 'mytheme')
        ),
       "screencast" => array (
            "name"      => "screencast",
            "default"   => "",
            "label"     => __('YouTube Screencast', 'mytheme'),
            "type"      => "text",
            "desc"      => __('Enter the YouTube ID here. For example: http://www.youtube.com/watch?v=SuNprTu5Y5c, use only the "SuNprTu5Y5c" value. Use the original studio trailer if possible.', 'mytheme')
        )
    );

Como você pode ver definimos as seguintes informações:

  • name: nome do campo;
  • default: valor padrão para o campo;
  • label: texto exibido para o usuário;
  • type: tipo da tag HTML input;
  • desc: descrição exibida após o campo.

Passo 2 – Adicionar os Campos na Inserção de Posts

Agora precisamos adicionar o código HTML na página do WordPress de inserção. Vamos criar duas funções e adicionar uma ação. Aqui está o código:

    function custom_fields_box_content() {
            global $post, $theme_metaboxes;
            foreach ($theme_metaboxes as $theme_metabox) {
                    $theme_metaboxvalue = get_post_meta($post->ID,$theme_metabox["name"],true);
                    if ($theme_metaboxvalue == "" || !isset($theme_metaboxvalue)) {
                            $theme_metaboxvalue = $theme_metabox['default'];
                    }
                    echo "\t".'<p>';
                    echo "\t\t".'<label for="'.$theme_metabox['name'].'" style="font-weight:bold; ">'.$theme_metabox['label'].':</label>'."\n";
                    echo "\t\t".'<input type="'.$theme_metabox['type'].'" value="'.$theme_metaboxvalue.'" name="'.$theme_metabox["name"].'" id="'.$theme_metabox['name'].'"/><br/>'."\n";
                    echo "\t\t".$theme_metabox['desc'].'</p>'."\n";
            }
    }

    function custom_fields_box() {
            if ( function_exists('add_meta_box') ) {
                    add_meta_box('theme-settings',__('Custom Settings', 'mytheme'),'custom_fields_box_content','post','normal','high');
            }
    }

    add_action('admin_menu', 'custom_fields_box');

Nesse código nós usamos o array criado anteriormente para criar o código HTML na área administrativa, quando criarmo um novo post. O resultado é esse:

Campos Personalizados Aprimorados

Campos Personalizados Aprimorados

Muito mais amigável, você não acha?

Passo 3 – Usando os Valores

A última parte é a manipulação dos valores. Nós precisamos de outra ação para adicionar/atualizar/apagar os valores. Então vamos criar mais uma função para isso:

    function custom_fields_insert($pID) {
        global $theme_metaboxes;
        foreach ($theme_metaboxes as $theme_metabox) {
            $var = $theme_metabox["name"];
            if (isset($_POST[$var])) {
                if( get_post_meta( $pID, $theme_metabox["name"] ) == "" )
                    add_post_meta($pID, $theme_metabox["name"], $_POST[$var], true );
                elseif($_POST[$var] != get_post_meta($pID, $theme_metabox["name"], true))
                    update_post_meta($pID, $theme_metabox["name"], $_POST[$var]);
                elseif($_POST[$var] == "")
                    delete_post_meta($pID, $theme_metabox["name"], get_post_meta($pID, $theme_metabox["name"], true));
            }
        }
    }

    add_action('wp_insert_post', 'custom_fields_insert');

Nesse código utilizamos funções do WordPress para adicionar, atualizar e apagar os valores de acordo com os campos que definimos.

Para ser possível utilizar esses campos, você pode fazer o mesmo que fizemos nos campos personalizados do WordPress. Você pode também criar uma nova função para isso. Por exemplo, no caso do video nós poderíamos criar uma função que exibisse o video somente se o valor do campo fosse preenchido:

function screen_cast($id) {
    if ($id) {
        echo '<div class="youtube">'.
             '<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/'.$id.
             '?fs=1&amp;hl=pt_BR"></param>'.
             '<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>'.
             '<embed src="http://www.youtube.com/v/'.$id.'?fs=1&amp;hl=pt_BR" type="application/x-shockwave-flash" '.
             'allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>'.
             '</div>';
    }
}

Com essa função, precisaríamos apenas adicionar uma simples chamada no nosso arquivo single.php:

        <?php screen_cast(get_post_meta($post->ID, 'screencast', true)); ?>

Isso é tudo sobre os campos personalizados!

Taxonomias Personalizadas – Custom Taxonomies

A última coisa que quero mostrar são as taxonomias personalizadas. Elas permitem adicionar diversas informações de um mesmo tipo. Elas funcionam de uma maneira semelhante às tags do post. Tudo que você precisa é mais uma função e uma ação no seu arquivo functions.php. Nesse exemplo vou adicionar uma taxonomia para uma lista de atores. O código necessário é:

    function create_custom_taxonomies() {
        register_taxonomy('actor', 'post', array(
            'hierarchical' => false, 'label' => __('Actor(s)', 'mytheme'),
            'query_var' => true, 'rewrite' => true));
    }
    add_action('init', 'create_custom_taxonomies', 0);

É só isso. Bem simples. O resultado é esse:

Taxonomias Personalizadas

Taxonomias Personalizadas

Para mostrar os valores no arquivo single.php, você pode usar o seguinte código:

                <?php echo get_the_term_list($post->ID, 'actor', __('<p>Actor(s): ', 'mytheme'), ', ', '</p>'); ?>

Conclusão

Nesse artigo mostrei como utilizar taxonomias e campos personalizados. Essas duas características do WordPress permitem que você transforme seus posts deixando-os únicos. Além disso, essas características permitem que você melhore a usabilidade do WordPress separando as informações em diferentes campos.

Share Button
Notice: get_the_author_ID está obsoleto desde a versão 2.8! Use get_the_author_meta('ID') em seu lugar. in /var/www/oscardias.com/br/wp-includes/functions.php on line 2908

Oscar Dias

Trabalho com desenvolvimento desde 2003 e já utilizei diversas linguagens de programação. Atualmente trabalho com PHP na minha empresa Softerize Sistemas.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *