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):
1 2 |
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:
1 2 |
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:
1 2 |
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:
1 2 |
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:
1 2 3 |
define('WP_CACHE', true); // habilita o cache define('ENABLE_CACHE', true); // habilita o cache define('CACHE_EXPIRATION_TIME', 3600); // em segundos |
Desabilitar o cache:
1 2 |
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:
1 2 3 4 5 |
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.
1 2 |
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:
1 2 3 4 5 6 7 8 9 |
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:
1 2 3 4 5 |
// 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.
1 2 3 4 5 |
// 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:
1 |
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):
1 |
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!
1 |
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.
1 2 |
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”:
1 2 3 |
@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:
1 2 3 |
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:
1 |
define('SAVEQUERIES', true); |
Em seguida, no rodapé do tema ativo, coloque o seguinte:
1 2 3 4 5 |
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.
1 2 3 |
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 |