O novo WordPress 2.9 está cada vez mais perto de sair para o mercado, e enquanto o WordPress 2.8 centrou-se basicamente na rescrita e optimização da infraestrutura já existente no core do WordPress, o novo WordPress 2.9 traz para cima da mesa uma série de grandes novidades e alterações estruturais importantíssimas para o futuro da plataforma.

Este novo lançamento centra-se essencialmente ao nível dos desenvolvedores, com uma série de novidades sobre as APIs de desenvolvimento para WordPress. No entanto, existem uma série de novidades também para desenhadores de templates e utilizadores finais também. Como resultado, existem uma série de coisas que você precisa saber sobre o novo WordPress 2.9, portanto, vamos à carga!

1. Templates: the_post_image()

Os desenvolvedores de templates têm agora à disposição uma nova funcionalidade que se tornou extremamente popular em templates nos dias de hoje. À medida que os blogs foram evoluindo de jornais para identidades únicas, como as Magazines, o uso de imagens e thumbnail cresceu também. Tipicamente, este tipo de layout era conseguido a partir de custom fields que seria criados manualmente e preenchidos de igual forma. Mas isso acabou!

Com o novo WordPress 2.9, se utilizador o uploader de imagens integrado no WordPress, o WordPress tratará de tudo por si. Os desenhadores de templates que gostariam de utilizar esta funcionalidade passam a necessitar de chamar apenas a tag the_post_image() nos seus templates para puxar as imagens que desejarem. Esta tag pode, opcionalmente, ter uma “medida”, que é na realidade uma das dimensões standard do WordPress: thumbnail, médio, grande, etc. Se nenhuma dimensão for específicada, ele assumirá por defeito a dimensão de thumbnail.

Exemplo:

<?php
while( have_posts() ) : the_post();
?>
<div>
<h1><a href=”<?php the_permalink() ?>“><?php the_title() ?></a></h1>
<?php the_post_image() ?>
<?php the_content() ?>
</div>
<?php endif; ?>

2. Templates: Registo de Suporte para funcionalidades

Esta pode parecer uma funcionalidade obscura, e tipicamente, e na verdade é extremamente simples compreender o que digo olhando para o cabeçalho. Neste caso, é um pouco mais obscuro pelo facto de sugerir uma funcionalidade que é introduzida no novo WordPress 2.9 e apenas para um nicho muito específico. Acredito que esta novidade possa vir a ser desenvolvida no futuro, e os autores de plugins podem passar a suportar as suas próprias causas.

O conceito é simples. Se existe uma funcionalidade — no core, o único caso é o dos thumbnails que descrevi em cima e que é intitulado de ‘post-thumbnails’ — um template pode declarar suporte para a funcionalidade usando a função add_theme_support() no ficheiro functions.php desse mesmo template. Apenas pode ser declarado neste ficheiro e necessita que essa funcionalidade seja especificada com um nome. Como mencionei, no novo WordPress 2.9, existe apenas uma funcionalidade com nome definido e essa é a post-image. Os autores de plugins podem providenciar as suas novas funcionalidades usando a função require_if_theme_supports().

require_if_theme_supports(‘my-custom-feature’,’/path/to/custom-lfeature-library.php’);

Os templates irão posteriormente ligar o suporte para a funcionalidade incluindo o seguinte código no seu ficheiro functions.php.

if ( function_exists( ‘add_theme_support’ ) )
add_theme_support( ‘my-custom-feature’ );

Utilizámos a verificação function_exists() na função add_theme_support() para assegurar a retrocompatibilidade com instalações WordPress posteriores ao novo WordPress 2.9.

3. Utilizadores: O caixote de lixo

No Windows, chamam-lhe Reciclagem. Nos Macs, chamam-lhe Lixo. Em ambos os casos, a funcionalidade existe para ajudar os utilizadores a recuperarem informação eliminada. Com o WordPress, as eliminações acidentais foram desde sempre permanentes. Não havia forma de voltar atrás e recuperar do erro. No novo WordPress 2.9, tudo passa a ser recuperável com uma nova funcionalidade de Caixote de Lixo, bem ao estilo dos sistemas operativos. Quando você elimina um artigo, página, categoria, comentário, ou uma qualquer parte do seu conteúdo, ele é movido automaticamente para o Lixo, onde você pode posteriormente decidir se o pretende recuperar ou eliminar permanentemente.

Screen-shot-2009-11-11-at-6.08.34-PM-690x227

A limpeza do caixote do lixo encontra-se automatizada para períodos de 30 dias por defeito, mas é perfeitamente possível editar este valor a partir do ficheiro wp-config.php. Adicione o seguinte código para modificar as características automáticas de limpeza para 7 dias, por exemplo. Modifique o valor se achar necessário.

define(‘EMPTY_TRASH_DAYS’,7);

4. Utilizadores: Editor de imagens

Uma das grandes novidades do novo WordPress 2.9 é o seu editor de imagens. Não me interprete mal. Este editor não passou a ser um Photoshop! e apenas suporta funcionalidades básicas neste momento. No entanto, a edição de imagens irá permitir aos blogueiros cortar imagens, dimensionar e rodar, tudo dentro do painel de edição do WordPress. A partir da biblioteca de media, poderá editar imagens clicando no link “Editar” que se encontra junto da imagem, e posteriormente clicando no botão “Editar” na página individual da imagem. Isso dá origem a um interface de edição semelhante ao desta imagem:

4096969054_06d3401641

5. Utilizadores: oEmbed

O oEmbed, tal como descrito em oEmbed.com, é uma especificação que permite aos providenciadores de media como o Flickr, YouTube e outros, providenciarem informação para aplicações de consumo como o WordPress. Portanto, incluindo um Embed (Utilize o uploader do WordPress e escolha a opção “A partir de URL” e cole o link para a página que contem a media, não a media propriamente dita) num artigo ou página, o WordPress consegue apresentar os aspectos técnicos desse ficheiro de media e formular automaticamente um formato que se enquadre no blog.

Se não pretende usar o GUI para este tipo de coisas, poderá simplesmente colocar o URL da página de media envolvido num shortcode deste tipo:

A lista de sites suportados pelo oEmbed em WordPress é a seguinte:

  • YouTube (via oEmbed)
  • Blip.tv (via oEmbed)
  • Flickr images e videos (via oEmbed)
  • Hulu (via oEmbed)
  • Viddler (via oEmbed)
  • Qik.com (via oEmbed)
  • Revision3 (via oEmbed)
  • Google Video (via interna)
  • PollDaddy (via interna)
  • DailyMotion (via interna)

Posto isto, os autores de plugins podem adicionar novos provedores se assim o desejarem, utilizando o filtro oembed_providers.

6. Plugins: Custom Post Types

Uma das grandes vantagens do Drupal (ler comparação entre 10 CMS para construir blogs) tem sido a sua capacidade de ter e gerir vários tipos de conteúdos contidos em objectos. O WordPress tem suporte uma série de conteúdos ao longo do tempo também, mas não tem sido flexível utilizar o WordPress como plataforma de blogging com suporte adicional para páginas e anexos. Tecnicamente, a função post_types que o WordPress tem suporte tem sido para artigo, página, revisão e anexo. Embora tenha sido possível adicionar novos tipos de post_types (como por exemplo podcast, mp4, ou tutoriais), essa tarefa tem sido extremamente insatisfatória e requeria aos desenvolvedores de plugins a gestão das partes móveis para conseguir por tudo a funcionar correctamente.

Isso também acabou. Os autores de plugins têm agora disponível a API para registar novos post types, abrindo a possibilidade a uma utilização ainda mais criativa do WordPress.

get_post_type()

A função get_post_type() apenas pode ser utilizada no Loop. Ela retorno o tipo de artigo que esse artigo é. Todo o conteúdo no WordPress é colocado na tabela de artigos (posts), daí o nome “post”.

get_post_types()

A função get_post_types() retorna uma lista de todos os tipos de conteúdos existentes. Por defeito, eles serão artigo, página, anexo e revisão.

register_post_type()

Como autor de plugins, poderá utilizar esta função para criar novos “post type”, ou seja, tipos de post. O primeiro argumento é a especificação única que pretende atribuir ao seu novo post type – vamos chamar-lhe a título de exemplo, podcast – e o segundo argumento é uma ordem que contenha elementos adicionais. A primeira chave aqui é a exclude_from_search, que por defeito se encontra em modo “true”. Poderá alterar esse parâmetro para “false” excepto se não pretender que a sua nova post_type seja pesquisável. Veja de seguida o exemplo que propomos.

function wpb_podcast_init()
{
register_post_type(‘podcast’,array(‘exclude_from_search’ =&gt; false) );
}
add_action(‘init’,’wpb_podcast_init’);

Actualmente ainda não existe um interface de utilizador para post types. Existe já um patch para o UI que provavelmente virá a ser integrado no WordPress 3.0.

7. Plugins: Comment Meta

Tem existido uma enorme variedade de meta tables no WordPress. As Meta tables, tal como a usermeta ou postmeta, são tabelas da base de dados que contêm informação acerca do tipo de dados armazenados no WordPress. Ela permite aos plugins e ao próprio WordPress que assine metadata, tais como diferentes níveis de utilizadores e capacidades, até peças de informação complementares. Agora, passa a existir também uma nova tabela para comment meta.

Embora ainda não seja claro como é que os autores de plugins irão utilizar esta tabela, o facto é que é bastante interessante e positivo ver que começam a existir tabelas para praticamente todo o tipo de conteúdos no WordPress.

8. Plugins: Metadata API

Com a adição de uma tabela comments meta, tornou-se efectivamente redundante duplicar funções através do WordPress. Você tem uma função get_post_meta() que faz precisamente o mesmo que a função get_usermeta() excepto que ambas vão buscar a mesma informação a tabelas diferentes que na realidade parecem idênticas exceptuando ao nível da informação da tabela.

No WordPress 2.9, irá aparecer uma nova Metadata API que poderá ser utilizada para puxar informação destas meta tabelas.

A função add_metadata() vai buscar um tipo de meta (‘comentário’, ‘post’, ‘utilizador’, etc), o ID do tipo de conteúdo, a chave e o valor da metadata, seja a informação única ou não (true ou false).

add_metadata(‘comment’, 12345, ‘twitter_id’, ‘someyoungpunk’);

Poderá ainda utilizar as funções update_metadata(), delete_metadata(), get_metadata() e update_meta_cache() para outro tipo de utilizações. Analise o ficheiro wp-includes/meta.php para documentação completa.