Truques de configuração do WordPress
Existem pequenas diretivas que você pode alterar/acrescentar no arquivo wp-config para que seu WordPress tenha um nível de personalização diferenciado e você aproveite melhor o que a plataforma tem a oferecer. Leia este artigo e aprenda incríveis truques de configuração para aumentar a performance de sua instalação e ter um WordPress refinado.
Muitas pessoas que usam WordPress sabem que o arquivo wp-config.php é o arquivo-chave para as configurações de banco de dados. É nele que você define o nome do banco de dados, nome de usuário, senha e localização. Mas o que muitos não sabem é que o wp-config.php pode ser usado para especificar uma grande variedade de outras configurações; configurações essas que permitem melhorar as funcionalidades, desempenho e segurança do seu WordPress.
As dicas a seguir abordam o que consta sobre o assunto no WordPress Codex, bem como alguns truques que provavelmente você não viu antes. Se você souber de qualquer outra configuração, comente que eu acrescento ao artigo. ;-)
Endereço do Blog e Endereço do Site
Por padrão, essas duas constantes de configuração não estão incluídas no wp-config.php, mas eles devem ser adicionados para melhorar o desempenho. Estas duas definições foram introduzidas no WordPress 2.2 e servem para substituir os respectivos valores do banco de dados sem alterá-los, efetivamente.
A adição dessas constantes reduz o número de consultas ao banco de dados e, consequentemente, melhora o desempenho do site. Essas configurações devem coincidir com as especificadas no painel do WordPress (Configurações > Geral). Segue um exemplo (não inclua a barra no final da URL):
define('WP_HOME', 'http://digwp.com'); define('WP_SITEURL', 'http://digwp.com');
Um truque legal é definir esses valores dinamicamente usando a variável global do servidor:
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/path/to/wordpress'); define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/path/to/wordpress');
“Template Path” e “Stylesheet Path”
Assim como o Endereço do Blog e Endereço do Site mostrados anteriormente, você também pode aumentar o desempenho do site eliminando as consultas ao BD para o “Template Path” e “Stylesheet Path” (que são, respectivamente, o caminho para o tema e o caminho para o estilo CSS). Aqui estão os valores padrão para essas duas definições:
define('TEMPLATEPATH', get_template_directory()); define('STYLESHEETPATH', get_stylesheet_directory());
Com isso, ainda há consultas ao banco de dados, mas é possível eliminar essas duas queries e colocar o caminho absoluto:
define('TEMPLATEPATH', '/absolute/path/to/wp-content/themes/active-theme'); define('STYLESHEETPATH', '/absolute/path/to/wp-content/themes/active-theme');
Desabilitar Cache e Expiração de Cache
Essas duas opções se aplicam a versões mais antigas do WordPress que ainda estão usando o esquema antigo de cache. A primeira permite habilitar ou desabilitar o cache, enquanto a segunda permite especificar o tempo de expiração de cache.
Habilitar o cache:
define('WP_CACHE', true); // habilita o cache define('ENABLE_CACHE', true); // habilita o cache define('CACHE_EXPIRATION_TIME', 3600); // em segundos
Desabilitar o cache:
define('WP_CACHE', false); // desabilita o cache define('DISABLE_CACHE', true); // desabilita o cache
Especificar Domínio de Cookie (Cookie Domain)
Existem várias razões para especificar um domínio de cookie para o seu web site. Um exemplo comum envolve impedir que cookies sejam enviados com requisições de conteúdo estático em subdomínios. Neste caso, pode-se utilizar esta constante para dizer para o WordPress enviar cookies apenas para o seu domínio não-estático. Este poderia ser um ganho significativo de performance. Aqui estão alguns exemplos de definição de cookie domain:
define('COOKIE_DOMAIN', '.digwp.com'); // não omitir o '.' define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('home').'/')); define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl').'/')); define('PLUGINS_COOKIE_PATH', preg_replace('|https?://[^/]+|i', '', WP_PLUGIN_URL)); define('ADMIN_COOKIE_PATH', SITECOOKIEPATH.'wp-admin');
Substituir Permissões de Arquivo
Se as permissões do seu servidor são muito restritivas, inserir essas definições no seu arquivo de configuração do WordPress pode ajudar a resolver alguns problemas. Lembrando que não precisa colcoar aspas nos valores.
define('FS_CHMOD_FILE', 0755); define('FS_CHMOD_DIR', 0755);
FTP/SSH
Essas constantes são para ajudar usuários a localizar e utilizar conexões FTP/SSH. Exemplos:
define('FS_METHOD', 'ftpext'); // força o método de sistema de arquivos : "direct", "ssh", "ftpext", or "ftpsockets" define('FTP_BASE', '/path/to/wordpress/'); // caminho absoluto para a pasta raiz (de instalação) define('FTP_CONTENT_DIR', '/path/to/wordpress/wp-content/'); // caminho absoluto para a pasta "wp-content" define('FTP_PLUGIN_DIR ', '/path/to/wordpress/wp-content/plugins/'); // caminho absoluto para a pasta "wp-plugins" define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub'); // caminho absoluto para a pasta sua chave-pública SSH define('FTP_PRIVKEY', '/home/username/.ssh/id_rsa'); // caminho absoluto para a pasta sua chave-privada SSH define('FTP_USER', 'username'); // seu usuário de FTP ou SSH define('FTP_PASS', 'password'); // senha do usuário especificado em FTP_USER define('FTP_HOST', 'ftp.domain.tld:21'); // hostname (com especificação de porta) para o servidor SSH/FTP
Alterar a localização de “wp-content”
Desde a versão 2.6 do WordPress é possível alterar o local padrão da pasta wp-content. Há boas razões para fazer isso, incluindo o reforço da segurança das instalações e facilitação de atualizações via FTP. Aqui estão alguns exemplos:
// caminho completo para o diretório atual (sem a barra final) define('WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/path/wp-content'); // URI completa para o diretório atual (sem a barra final) define('WP_CONTENT_URL', 'http://domain.tld/path/wp-content');
Você também pode especificar um caminho personalizado para o wp-content. Isso pode ajudar com problemas de compatibilidade com certos plugins.
// caminho completo para o diretório atual (sem a barra final) define('WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'] . '/path/wp-content/plugins'); // URI completa para o diretório atual (sem a barra final) define('WP_PLUGIN_URL', 'http://domain.tld/path/wp-content/plugins');
Revisões de Artigos (“Post Revisions”)
Já há algum tempo o WordPress fornecem um sistema de versões que permite aos utilizadores guardar versões diferentes de seus posts e até reverter para versões salvas anteriormente se necessário. Aqui estão algumas das definições de configurações que podem ser úteis.
Definir o número de versões salvas:
define('WP_POST_REVISIONS', 3);
Desabilitar a revisão de posts (se não for usar o recurso, utilize essa diretiva para poupar espaço no BD):
define('WP_POST_REVISIONS', false);
Tempo de Salvar Automaticamente (“Autosave”)
Assim como o controle de versões, o autosave é um recurso muito útil existente. Por padrão, o WordPress salva seu trabalho a cada 60 segundos, mas você pode modificar esta definição para o tempo que quiser. Cuidado com o que vai colocar para não “estressar” seu servidor!
define('AUTOSAVE_INTERVAL', 160); // em segundos
Debugging
Desde a versão 2.3.1 os usuários tem a opção de mostrar alguns erros e avisos para ajudar com a depuração do site. Desde a versão 2.5 do WordPress é possível elevar o nível de informação para E_ALL para ativar avisos para funções obsoletas. Por padrão (ou seja, se nenhuma definição é especificado no wp-config.php) o relatório de erros está desativado.
define('WP_DEBUG', true); // habilitar debugging mode define('WP_DEBUG', false); // desabilitar debugging mode (padrão)
Relatório de Erros
Aqui está uma maneira fácil de habilitar um relatório básico de erros no WordPress. Crie um arquivo chamado php_error.log em uma pasta de sua escolhe e coloque permissão de escrita no arquivo (leia mais sobre permissões de arquivos). Em seguida, edite o caminho na terceira linha do código a seguir e coloque no seu “wp-config.php”:
@ini_set('log_errors','On'); @ini_set('display_errors','Off'); @ini_set('error_log','/home/path/domain/logs/php_error.log'); // complemento: http://br.php.net/getcwd
Aumentar memória do PHP
Se você estiver recebendo mensagens de erro como “Tamanho de memória permitido de X bytes esgotado”, esta dica pode ajudar a resolver o problema.
Desde o WordPress versão 2.5, a constante WP_MEMORY_LIMIT permite que você especifique a quantidade máxima de memória que pode ser usada pelo PHP. Por padrão, o WordPress irá automaticamente tentar alocar 32 MB – então você só vai precisar isso se quiser valores superiores a 32MB. Observe que alguns planos de hospedagem desativam sua capacidade de aumentar a memória do PHP; se for seu caso, você precisa pedir que eles aumente a memória pra você. Aqui estão alguns exemplos:
define('WP_MEMORY_LIMIT', '64M'); define('WP_MEMORY_LIMIT', '96M'); define('WP_MEMORY_LIMIT', '128M');
Salvar e exibir Queries do Banco de Dados para Análise
Esta técnica é perfeita para guardar as consultas de banco de dados e exibir as informações para análise posterior. O processo armazena cada consulta, sua função associada e seu tempo total de execução. Esta informação é guardada como um array e pode ser exibida em qualquer página do tema. Para fazer isso, primeiro adicione a seguinte diretiva no seu wp-config.php:
define('SAVEQUERIES', true);
Em seguida, no rodapé do tema ativo, coloque o seguinte:
if (current_user_can('level_10')) // se for administrador { global $wpdb; print_r($wpdb->queries); }
Controle de Acesso ao Proxy
Desde o WordPress 2.8 o arquivo de configuração pode ser usado para definir constantes envolvidas com o bloqueio, filtragem e permição de acesso a máquinas específicas de um servidor proxy. Por exemplo, se você hospedar seu site WordPress em uma intranet, você pode impedir o acesso a todos os hosts externos e só permitir visitas do localhost (usando a primeira definição abaixo).
Você também pode permitir o acesso de máquinas específicas com uma lista separada por vírgulas, uma verdadeira “lista branca” (como demonstrado na definição do terceiro abaixo). Necessariamente deve permitir o acesso de api.wordpress.org para garantir as funcionalidades de arquivos importantes e plugins.
define('WP_HTTP_BLOCK_EXTERNAL', true); // bloqueia requisições externas define('WP_HTTP_BLOCK_EXTERNAL', false); // permite requisições externas define('WP_ACCESSIBLE_HOSTS', 'api.wordpress.org'); // "lista branca" de hosts
Mto bom! Vou aproveitar esse post pra dar uma melhorada nas configurações dos meus blogs :)
Valeu pelas dicas cara!
Mesmo que só utilizando 1 ou 2, é bom saber as possibilidades ;D
Abraços!
Se eu fizer um upgrade para a versão paga, tenho acesso aos códigos fontes para alterar a programação página inicial? Por exemplo, inserir destaques, publicidade, etc.
Obrigado.
Esse artigo me salvou!!!!
@Chris Benseler
Isso, aí! Vamos aproveitar e incrementar a performance de nossos WordPress! ;-)
@yogodoshi
Usa mais, poxa! Tem tantos pra escolher… rsrs
@Amilton Aquino
Eu sei que é possível alterar facilmente quando há instalar do WordPress em servidor próprio. Em blog do wordpress.com eu realmente não sei…
@Edgard Gonçalves
Que bom que foi útil, Edgard! Volte sempre!
Como posso permitir comentários vindo de rede com proxy?
Pessoal,
Preciso de ajuda de vocês, eu estava dentro da ferramenta de Admin do Worpress>configurações>geral
e sem querer alterei (Endereço do WordPress (URL), gostaria de saber como voltar, pois não consigo entrar novamente no admin para refazer o que fiz.
Por Favor me ajudem.
Obrigado
Primeiramente muito obrigado pelas informações! Estou com um problema quando clico por ex. Header updated. Visit your site to see how it looks, apos clicar ele mostra a arvore de diretorios, Parent Directory, index.php, license.txt, wp-admin/, etc… Alguem poderia me ajudar? mscrodrigo@gmail.com
Sinceramente, não entendi qual é o problema…
Ótimo post, um pouco mais de wordpress do que se costuma ver… Parabéns…
Excelente. É sempre bom descobrir novas maneiras de trabalhar com o WordPress.
Já guardei nos favoritos.