Archive for the 'Wordpress' Category

Solução para o problema de tradução do Wordpress no Bluehost

por: glacial - 17/01/2008

Como o Coifman avisou, tivemos uma tremenda dor de cabeça com o Bluehost e um dos problemas foi a “quebra” da tradução dos projetos baseados no Wordpress.

Depois de tentar, por diversas vezes, entrar em contato com o suporte (via ticket de suporte ou por um live chat que nunca funcionava) vi no Twitter que os caras atualizaram as versões do Apache e do PHP no servidor e não mandaram aviso pra ninguém!

Algumas noites mal dormidas depois, consegui falar com alguns atendentes do suporte e depois de muitas sugestões furadas (como alterações no php.ini e reinstalação da tradução) encontrei a resposta num forum do próprio bluehost.

De acordo com o post, o upgrade fez a biblioteca gettext do Wordpress ter problemas com máquinas rodando a 64 bits. A solução encotrada foi alterar o arquivo wp-includes/gettext.php.

Na altura da linha 105 encontre o código:

// Caching can be turned off
$this->enable_cache = $enable_cache;
// $MAGIC1 = (int)0x950412de; //bug in PHP 5.0.2, see https://savannah.nongnu.org/bugs/?func=detailitem&item_id=10565
$MAGIC1 = (int) - 1794895138;
// $MAGIC2 = (int)0xde120495; //bug
$MAGIC2 = (int) - 569244523;
// 64-bit fix
$MAGIC3 = (int) 2500072158;
$this->STREAM = $Reader;
$magic = $this->readint();
if ($magic == ($MAGIC1 & 0xFFFFFFFF) || $magic == ($MAGIC3 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms
$this->BYTEORDER = 0;
} elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
$this->BYTEORDER = 1;
} else {
$this->error = 1; // not MO file
return false;
}

E substituir por:

// Caching can be turned off
$this->enable_cache = $enable_cache;
// $MAGIC1 = (int)0x950412de; //bug in PHP 5.0.2, see https://savannah.nongnu.org/bugs/?func=detailitem&item_id=10565
$MAGIC1 = (int) - 1794895138;
// $MAGIC2 = (int)0xde120495; //bug
$MAGIC2 = (int) - 569244523;
// 64-bit fix
$MAGIC3 = (int) 2500072158;
$this->STREAM = $Reader;
$magic = $this->readint();
if ($magic == $MAGIC1 || $magic == $MAGIC3) { // < - 64 BIT FIX: CHANGE THIS LINE!
$this->BYTEORDER = 0;
} elseif ($magic == ($MAGIC2)) {
$this->BYTEORDER = 1;
} else {
$this->error = 1; // not MO file
return false;
}

Clique aqui para baixar o arquivo já corrigido.

Com isso, o Wordpress volta a reconhecer o arquivo .mo da tradução. Agora é só você fazer isso em TODAS as suas instalações do Wordpress no servidor. Sorte sua se não forem muitas :P

Nota de Usuário Revoltado

Seria somente um problema corriqueiro de atualização de versão se não fosse o descaso e dificuldade de atendimento do Bluehost. Até hoje não responderam nenhum dos tickets de suporte que eu mandei e só consegui falar com alguém no live chat depois de inúmeras tentativas durante a madrugada.

Fica aqui a minha reclamação e aceito sugestões de outros hostings que tenham um atendimento ao usuário decente. :\

Plugin Wordpress: You Are Here

por: Rafael Dourado - 14/01/2008

[ATUALIZAÇÃO]

Droga, saiu um plugin com o mesmo nome. Vou ajeitar esse troço e publico direito.

Como já disse várias vezes aqui no Netlus, trabalho bastante com o Wordpress e o utilizo primordialmente como um gerenciador de conteúdo, mais do que um sistema para blogs. Boa parte dos site dos meus clientes são gerenciados por ele e o indico a qualquer um que precise de um CMS e não queira perder tempo nem dinheiro.

E em muitos projetos, crio pequenos plugins para agilizar meu trabalho. Logo, vou começar a publicar os mais genéricos aqui no Netlus.

Este plugin adiciona classes à tag <body> para identificar cada tela gerada pelo Wordpress e, assim, facilitar a criação do CSS. O You Are Here é baseado no plugin ClassyBody de Alister Cameron. Porém, o plugin dele criava as identificações baseado no ID, e isso muitos vezes gerava alguns problemas para mim na hora de uma migração.

O meu plugin se baseia no nome da página ou artigo e complementa a classe com as categorias associadas ou páginas-mãe. Como estou mais acostumado a trabalhar com o functions.php e nunca publiquei um plugin para Wordpress, é bem possível que algumas coisas estejam fora do padrão indicado (e não pensei em um nome melhor ainda). Corrigirei tudo isso e publicarei uma nova versão 100%. Mas esta já pode ajudá-lo bastante.

Instalação

  1. Baixe este arquivo.
  2. Descompacte-o na pasta wp-content/plugins .
  3. Ative-o.
  4. Altere a tag body presente no seu header.php da seguinte forma:
    <body class=”<?php if (function_exists(’you-are-here’)) you-are-here(); ?>”>
  5. Pronto. Agora é só criar o seu CSS.

Espero que seja útil.

Vignette versus Wordpress

por: Rafael Dourado - 11/01/2008

Depois de um período de trabalho triplicado, recuperação da fadiga e virose e bacteriose mal curadas, finalmente voltei a postar! E uma das dores de cabeça que acabei tendo (devidamente amenizada pelo boa remuneração) foi trabalhar pela primeira vez com o Vignette.

Caso não conheça, a Vignette é uma empresa americana que possui uma série de produtos para a web. Sua soluções em gerenciamento de conteúdo são produtos caríssimos utilizados, obviamente, por quem tem muito dinheiro como a Globo e a Martha Stewart. Porém, durante todo o processo não conseguia deixar de pensar: com o Wordpress seria mais rápido.

A idéia do Vignette é que não é necessário muito conhecimento para fazer o que quiser com seu site e o projeto era um site modelo que tirava proveito de todos os recursos dele. Mas o sistema não é nada fácil de usar. Uma tarefa simples como a de inserir uma imagem em um artigo, por exemplo, são necessários cerca de 10 cliques — metade deles abrem uma nova janela — e o preenchimento de um formulário com os dados da imagem em um gerenciador de mídia em Flash. No Wordpress, nem é necessário sair da tela de edição!

Mesmo dizendo que é possível alterar qualquer coisa sem programar, o módulo de leiaute simplesmente não obedece ninguém. Ele próprio define as margens entre os blocos de conteúdo e por mais que se tente definir um tamanho exato para esses blocos, o número nunca é obedecido. Em um leiaute que deveria ter 3 colunas com 320 pixels, o Vignette alterava esse valores ao seu bel-prazer e ignorava as margens de leitura. No Wordpress, a mobilidade do visual depende da habilidade do desenvolvedor CSS, do arrastar-e-soltar dos widgets e dos plugins personalizáveis. A maior parte do trabalho fica de fato nas mãos do desenvolvedor, mas quem estudou design da informação aqui, afinal?

POG? Pior!

Bom, mas se é possível aprender a usar o Orkut, também é possível aprender a usar o Vignette, não é? Porém, se você for desenvolvedor e prezar o mínimo que seja pelo seu trabalho, terá de se despir de todos os seus valores caso vá trabalhar com esse elefante branco (que o diga Diego Eis, que assim também trata o Vignette). Diferente do Wordpress, os padrões web passam longe dali e o código gerado é uma gambiarra de fazer inveja a qualquer “sobrinho”. É uma mistura de CSS externo, CSS inline, tags abertas, tabelas posicionando divs e vice-versa, elementos sem identificação e javascript. Inclusive, em algumas páginas todo o conteúdo é puxado por javascript, até mesmo o leiaute. Ele redefine a Programação Orientada a Gambiarra!

Era tanto código que ele jogava que em certo momento parti para a ignorância e sai espalhando centenas de !important pelo CSS. Deu certo por um tempo, mas depois percebi que além do código normal do site, ainda existia um ícone em cada bloco de conteúdo com link direto para a edição que quebrou o leiaute inteiro.

Essa briga durou duas semanas intensas, mobilizou cerca de 20 profissionais internos, além de mim e o Glacial como externos, e o produto final, na minha opinião, poderia ter ficado melhor se o gerenciador não tivesse atrapalhado tanto. Porém, cumpria o prometido e a empresa que solicitou o outsourcing teve o seu leiaute devidamente implementado.

Mas não consigo tirar uma pulga atrás da orelha: como um sistema é considerado um dos melhores do mercado ignorando completamente qualquer estudo de usabilidade, acessibilidade e boas práticas de desenvolvimento?

Wordpress Atualização 2.3.2

por: Rodrigo Coifman - 03/01/2008

Bom começo de ano a todos que apreciam ou não o Netlus!  Para mim o ano começou hoje, e já dei de cara com atualização do nosso querido xodó que gerencia esse blog e outros projetos da minha vida.

Segue a lista de melhorias:

  • Trac 5325 sanitize_post and sanitize_post_field are very expensive no-ops Trac Trac
  • Trac 5373 wp_list_pages - set ‘hierarchical’ to 0 on ‘include’
  • Trac 5473 Suppress DB errors unless WP_DEBUG is true Trac
  • Trac 5487 query.php mistakenly uses is_admin() to check for admin privileges Trac
  • Trac 5495 setup-config.php, install.php don’t check for a valid MySQL connection Trac
  • Trac 5500 Custom DB Error Page Trac
  • Trac 5535 Limit post_password exposure in XML-RPC metaWeblog.getRecentPosts

Para você que não está entendendo nada desse post, acesse e conheça mais sobre esse poderoso gerenciador de conteúdo. Para aqueles que já são familiarizados, vale a pena ter esses dois links em seu del.icio.us:

Tradução do NextGEN Gallery v0.82

por: Rafael Dourado - 30/11/2007

O NextGEN Gallery é o melhor plugin hoje em dia – na minha modesta opinião – para gerenciamento de galerias de fotos para Wordpress. Certo, eu sei que existe o Gallery2 e que ele tem muito mais recursos, mas o acho tão complicado de usar que não vale nem a pena.

Apesar de estar ainda longe do ideal, o NextGEN agrada muita gente e é o plugin que utilizo com meus clientes. É fácil de usar e compre seu papel.

Bom, fiz uma tradução para o português brasileiro usando codificação ISO-8859-1. Traduzi a versão 0.82 do plugin em UTF-8 e ISO8859-1. Caso tenha interesse, faça o download no link abaixo e descompacte-o na pasta /wp-content/plugins/nextgen-gallery/lang. Se encontrar algum erro, por favor, avise-me pelos comentários para que possa fazer a correção.

[ Tradução PT_BR do NextGEN Gallery v0.82 em UTF-8 ]

[ Tradução PT_BR do NextGEN Gallery v0.82 em ISO-8859-1 ]

Problemas com o plugin Breukie’s Links no WP 2.3

por: Rafael Dourado - 03/10/2007

Quem fez a migração para o Wordpress 2.3 e usava o plugin Breukie’s Links deve ter ficado indignado ao ver que ele havia parado de funcionar. Na verdade ele não pifou totalmente, só não grava mais as alterações.

Para resolver isso, edite o código original do plugin e procure pela linha 388. Você vai encontrar o seguinte código:

register_sidebar_widget($name, $i <= $number ? 'widget_breukieslinks' : /* unregister */ '', '', $i);

Acontece que a função register_sidebar_widget do WP 2.3 reduziu um parâmetro. Então é só excluir o último ” para que o WP consiga voltar a enviar os parâmetros corretamente pro widget. Ficará assim:

register_sidebar_widget($name, $i <= $number ? 'widget_breukieslinks' : /* unregister */ '', $i);

Pronto. Já dá para usá-lo denovo. Quebra o galho pelo menos até o autor corrigir totalmente. Como no blog ele disse que está sem PC, deve demorar um tempo para ele soltar uma atualização.