Busca nos campos personalizados do WordPress

Os campos personalizados é um recurso usado no WordPress para que o autor de um post possa armazenar dados a sua escolha. Você pode usar esse recurso de várias formas: mostrar imagens personalizadas, falar o que você está ouvindo durante a escrita do post, adicionar informação pessoal e muito mais. Em um blog sobre livros, você pode usar tal recurso para criar os campos “Autor”, “Editora”, “Ano” e por aí vai.

Estou trabalhando em um projeto que utiliza os campos personalizados na área de Imprensa, onde cada post aponta em que tipo de imprensa determinada informação foi postada: Rádio, TV, Internet, Jornal. Como dito acima, criar o campo personalizado é simples. Difícil é filtrar os posts de acordo com o valor do campo.

A solução

Descobri um plugin chamado Search Custom Fields. Numa explicação rápida, ele adiciona os Campos Personalizados na query de busca de posts.

Antes:

  1. <a href="/?s=minhabusca">minha busca</a>

Depois:

  1. <a href="?meucampopersonalizado=Veículo&s=meuvalordocampopersonalizado">minha busca pelo campo personalizado</a>

Na documentação do plugin, o autor mostra como turbinar o campo de busca do WordPress. Ao invés disso, escrevi uma pequena função para listar os valores de um atributo personalizado:

  1. function list_custom_fields($metakey, $output) {
  2.     // based on http://sixrevisions.com/wordpress/custom-fields-search/
  3.     global $wpdb;
  4.     $items = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );
  5.     if ($items) {
  6.         if ($output == "dropdown") { // display values in a select
  7.             echo "<form action=\"/\" method=\"get\"><input type=\"hidden\" name=\"key\" value=\"$metakey\" /><select name=\"s\" onchange=\"this.form.submit();\"><option></option>";
  8.             foreach ($items as $item) {
  9.               echo "<option value=\"" . $item . "\">" . $item . "</option>";
  10.             }
  11.             echo "</select></form>";
  12.         } else if ($output == "list") { // display values in a list
  13.             echo "<ul>";
  14.             foreach ($items as $item) {
  15.               echo "<li><a href=\"/?s=$item&key=$metakey\">$item</a></li>";
  16.             }
  17.             echo "</ul>";
  18.         }
  19.     }
  20. }

Coloque a função acima no arquivo functions.php do seu tema e chame-a, de duas formas, em seu sidebar, por exemplo:

  1. < ?php if(function_exists('list_custom_fields')) list_custom_fields("Veículo", "dropdown"); ?>

…para mostrar os valores do campo personalizado “Veículo” em select do HTML ou…

  1. < ?php if(function_exists('list_custom_fields')) list_custom_fields("Veículo", "list"); ?>

…para mostrar os valores do campo personalizado “Veículo” em uma lista.

Alternativas ao PHPMyAdmin

O PHPMyAdmin é quase uma unanimidade em gerenciadores de banco de dados MySQL. Mas existe vida além dele. Vamos lá:

SQL Buddy

O SQL Buddy é uma alternativa bacana, com bonita interface e traduzido para vários idiomas, incluindo português.

sqlbuddy

Adminer

Já o Adminer é um app em php feito em 1(!) único arquivo. Possui diversas traduções (nenhuma ainda em português) mas é altamente indicado o mantermos em nossos servidores para uma rápida manutenção.

adminer

Todo lists para o Textmate

Fica a dica para quem usa o Textmate: Tasks é um bundle para o Textmate que permite a criação de Todo lists bonitinhas.

Tasks

A instalação é fácil:

  1. mkdir -p ~/Library/Application\ Support/TextMate/Bundles
  2. cd ~/Library/Application\ Support/TextMate/Bundles
  3. git clone git://github.com/henrik/tasks.tmbundle.git Tasks.tmbundle
  4. osascript -e 'tell app "TextMate" to reload bundles'

Depois disso, todos os arquivos .todo, .todolist e .tasks serão formatados de acordo com o bundle.

Data URI


Spoiler: o conteúdo abaixo não funciona no Internet Explorer.

Em 2005 o Irapuan Martinez falou do Acid 2 e de um recurso interessantíssimo, que acabei de testar: Dat URI (que existe desde 98).

Dat URI, em poucas palavras, é a possibilidade de inserir conteúdo dentro de um arquivo HTML sem a necessidade de linkar o arquivo. Assim, a imagem ao lado poderia ser inserida com:

Continue reading