Conheça as configurações disponíveis com wp-config

Um dos arquivos mais importantes de uma instalação WordPress é wp-config.php. Ele costuma ficar na raiz da instalação do WP e contém várias informações de configuração do seu site, como por exemplo, os dados de conexão com o banco de dados. Conheça a seguir quais os tipos de configuração e customização você pode fazer com o wp-config.

Atenção

Alterar o arquivo wp-config pode fazer com que o seu site fique inacessível. Teste antes em um ambiente de separado do site de produção, faça backups e proceda por sua própria conta e risco

O arquivo wp-config e sua localização

O arquivo wp-config.php fica na raiz da sua instalação WordPress. Se você instalou o WP na raiz do site, é aí que ele vai estar. Se você instalou em um subdiretório, o arquivo estará neste subdiretório.

Shell

Quando você acabou de baixar o arquivo ZIP do WordPress em wordpress.org, o wp-config ainda não existe. Há somente um arquivo chamado wp-config-sample.php, que serve de guia para você criar o seu.

Quando fazemos a famosa instalação de 5 minutos do WordPress o arquivo wp-config é criado automaticamente, usando os dados que preenchemos durante a instalação.

Caso seu WP esteja na raiz do site, você pode mover o arquivo wp-config um diretório acima, fora da raiz pública do site, evitando acesso indevido e listagem dos dados do banco caso haja alguma falha de configuração do servidor.

Estrutura do arquivo

O arquivo wp-config pode ser resumido como um arquivo PHP que reúne várias declarações de constantes. Constantes são identificadores para valores únicos no código e por padrão são escritos em caixa-alta (letras maiúsculas):

PHP

Caso deseje saber mais, verifique a documentação do PHP.

Configurações de banco de dados

As primeiras informações que vemos são as configurações de banco de dados:

PHP

Aí você deve preencher os dados de conexão com o seu banco de doados MySQL: nome, usuário, endereço e senha. Se você não sabe quais são estes dados, verifique no painel de controle da sua hospedagem ou pergunte ao seu provedor. Normalmente o servidor é ou localhost ou mysql.seudominio.com.br. Alguns provedores de hospedagem como Locaweb ou Kinghost, enquanto outros que usam CPanel utilizam localhost.

Os últimos dois campos listados acima são o código de caracteres (DB_CHARSET) e colação (DB_COLLATE) usados no banco de dados. Se você não sabe o que são, melhor deixar as opções padrão preenchidas. Caso seja curioso e queira saber para que servem, estas respostas do Stack Overflow dão uma ideia geral.

Configurações avançadas

Caso seu banco de dados esteja acessível através de uma porta diferente ou de um socket, a declaração do servidor de banco de dados deve ser alterada:

PHP

Para permitir que WordPress faça otimizações automáticas do banco de dados, use o código a seguir:

PHP

Tabelas customizadas de usuário

É possível usar tabelas customizadas para usuários, diferentes das tabelas padrão criadas pelo WordPress. Assim é possível que dois sites tenham os mesmos usuários, por exemplo. Para definir as tabelas customizadas, basta inserir o código a seguir:

PHP

Chaves de segurança

As chaves de segurança servem para manter o site mais seguro contra invasões, roubos de sessão, etc. Este campo é preenchido automáticamente na instalação automática, mas você pode alterá-lo. Não é necessário lembrar o que foi preenchido (mas se você conseguir lembrar te pago um chopp 😉 ). O correto é criar strings aleatórias, e para isso o ideal é usar o próprio gerador do WordPress.

PHP

Prefixo de tabela

PHP

Por padrão o WordPress usa wp_ como prefixo dos nomes das tabelas do banco de dados porém em alguns casos é preciso alterá-las.

Se você tem dois sites compartilhando o mesmo banco e os dois utilizarem as mesmas tabelas vai ser um salseiro doido. Uma atualização em um se reflete nos dois. Utilizando prefixos diferentes, cada site usará suas próprias tabelas.

Podemos criar prefixos aleatórios, usando por exemplo um pedaço de alguma string do gerador de chaves do WP. Usando o exemplo listado acima:

PHP

Algumas observações:

  • Se você fizer o desenvolvimento em máquinas Windows, tome cuidado com prefixos de tabela em caixas alta e baixa. Por padrão o MySQL em Windows não tem distinção de maiúsculas (é case-insensitive);
  • Se o prefixo de tabelas listado no wp-config for diferente do prefixo de tabelas usado no banco, ao acessar o site você será levado para o diálogo de instalação do WP.

Usar o prefixo padrão de tabelas por si só não é uma falha de segurança, se seu site estiver em um servidor bem configurado. Mas alterar o prefixo pode sim ser uma vantagem contra script kiddies que colocam robôs buscando falhas de segurança em sites.

Caso deseje alterar os prefixos de tabela em um site que já exista, o ideal é usar um plugin ou saber exatamente o que mexer no banco de dados. Alguns campos de permissão do usuário armazenam o prefixo de tabelas na tabela wp_usermeta.

É preciso lembrar que antes de fazer essas alterações é preciso fazer um backup do banco e dos arquivos?

Estrutura do site e de arquivos

É possível usar o wp-config para alterar os endereços dos site, assim como a estrutura padrão de arquivos do WordPress, ou seja, onde irão ser armazenados os arquivos de conteúdo, os plugins, os arquivos de upload, etc. Apesar de incomuns, algumas estruturas são úteis no momento de desenvolvimento ou quando você muda um site de endereço.

Às vezes precisamos passar um site que está em um subdiretório para a raiz, por exemplo. Assim, primeiro movemos o arquivo index.php do subdiretório para a raiz. Depois alteramos os campos a seguir:

PHP

Os nomes dessas duas constantes podem confundir:

  • WP_SITEURL: é o endereço dos arquivos do WordPress. No exemplo acima, para acessar o wp-admin, digitamos http://seusite.com/wp/wp-admin;
  • WP_HOME: é o endereço público do seu site, que o usuário verá ao visitá-lo. No caso acima, http://seusite.com.

Arquivos

Também é possível alterar a estrutura de arquivos:

PHP

Lixeira e salvamento automático e revisões

Por padrão o WordPress tem um autosave que salva os posts que estão sendo editados a cada minuto, porém este valor pode ser alterado:

PHP

Posts apagados vão para a lixeira, onde permanecem por 30 dias até que sejam removidos definitivamente. É possível alterar o valor padrão ou desabilitar a lixeira:

PHP

Existe também uma função pouco usada de revisões de post. Mesmo após publicado, um post tem por padrão versões anteriores armazenadas no banco, que podem ser restauradas se alguma modificação foi feita de maneira errada. Funciona como um time machine, da Apple, com uma interface diff (diferenciação de arquivos):

Interface de revisões do WordPress

Para desabilitar ou restringir as revisões a um número máximo, basta inserir o seguinte código no wp-config:

PHP

Atualizações

O WordPress faz os upgrades de segurança do core automaticamente. Upgrades de segurança são as atualizações de versões menores: 5.0.X. Os outros tipos de alteração só são feitos pelo usuário.

Para desabilitar todas as atualizações:

PHP

Para permitir todas as atualizações do core:

PHP

Quando necessário o WordPress também faz uma atualização do banco de dados. Em alguns casos específicos, quando há tabelas muito grandes (milhares de usuários, por exemplo), esta atualização pode dar erro.

Há uma configuração para desabilitar esta configuração:

PHP

Segurança

SSL no wp-admin

Para forçar o SSL (https) no wp-admin:

PHP

Desabilitar HTML não sanitizado

Usuários administradores e editores podem inserir HTML que não será sanitizado em alguns campos como títulos. Ou seja, o código HTML digitado por estes usuários nestes campos será interpretado pelo navegador como código.

Isto pode ser um problema de segurança em alguns casos, então é possível desabilitar esta configuração:

PHP

Edição de arquivos

Outra funcionalidade que pode ser usada maliciosamente é a edição de arquivos de tema ou de plugin. É aquele botãozinho “Editar CSS” no menu Aparência. Para desabilitar esta funcionalidade:

PHP

Desabilitar instalações e atualizações de temas e plugins

Outra funcionalidade que pode ser desabilitada é a de instalação e atualização de plugins. Assim pode-se ter certeza de que o usuário não poderá instalar plugins e alterar a funcionalidade do site.

PHP

Desenvolvimento

Quando estou fazendo o desenvolvimento de um site costumo definir algumas configurações no wp-config para facilitar minha vida:

PHP

A primeira função ativa o log, então serão mostradas mensagens de erro ou avisos (errors, notices e warnings). Com somos avisados se estivermos usando uma função depreciada, que será removida do core, por exemplo, ou qual a causa do erro.

WP_DEBUG_LOG ativa um arquivo de log, então todas essas mensagens de erro e avisos são salvos no endereço /wp-content/debug.log.

Atenção

Não faça upload do arquivo debug.log para o servidor de produção e não ative o debug no servidor de produção. O conteúdo deste arquivo pode mostrar a usuários maliciosos características do seu servidor.

Scripts

Há duas configurações que permitem debugar os scripts:

PHP

A primeira linha faz com que os scripts e folhas de estilo em wp-admin não sejam comprimidos e concatenados, e sim servidos individualmente.

O segundo faz a mesma coisa com os scripts e folhas de estilo que o WordPress coloca na parte pública do site. Scripts e temas também terão os scripts e CSSs servidos individualmente e sem compressão, caso tenham sido desenvolvidos de maneira correta.

Banco de dados

PHP

A configuração de SAVEQUERIES faz com que todas as consultas ao banco de dados sejam armazenadas em um array com informações de que função fez a consulta e quanto tempo levou. Esse array pode ser depois consultado para análise.

Cron

Cron é um serviço disponível em servidores para executar comandos de rotina em intervalos de tempo pré-definidos. O WP Cron serve para a mesma coisa, mas enquanto no servidor o Cron roda nos horários estipulados, no WP ele depende do acesso ao site.

Há uma postagem no fórum do WP que explica bem como funciona o WP Cron e quando usar o código abaixo para ativar o Cron alternativo:

PHP

Você pode definir um intervalo em segundos para evitar que o WP Cron rode mais de uma vez:

PHP

Há quem desabilite o WP Cron para melhorar a velocidade do site. Se você fizer isso, habilite o Cron do servidor para chamar o WP Cron, senão alguns comandos de rotina podem não ser executados.

Para desabilitar o WP Cron:

PHP

Memória

O WordPress, por padrão, tenta definir a memória disponível para 40MB, numa instalação normal, ou 64MB em uma instalação multisite. Não adianta tentar definir valores menores que esses, mas se quiser aumentar a memória disponível basta definir esta configuração:

PHP

Existem algumas tarefas administrativas que precisam de mais memória, então pode-se definir um limite para o uso de memória no wp-admin

PHP

External requests

Há uma configuração, WP_HTTP_BLOCK_EXTERNAL, para impedir que o WordPress faça requisições externas, ou seja, só permitem requisições para localhost. É possível definir alguns domínios permitidos com WP_ACCESSIBLE_HOSTS.

PHP

Multisite

Multisite é uma rede de sites que rodam na mesma instalação de WP. Há um site principal e um tipo de usuário que tem acesso a todos os blogs. As outras permissões são para cada site em si.

Para ativar a versão multisite:

PHP

O padrão para multisite é que os sites tenham endereço com subdiretório, ou seja, https://dominio.com.br/site. Se preferir que o WP Multisite funcione com subdomínios, ou seja, com endereços do tipo https://site.dominio.com.br, é preciso ativar esta configuração no painel ou no wp-config:

PHP

As duas funções abaixo são para erros de banco de dados. É possível salvar erros de consultas ao banco em um arquivo de texto:

PHP

Se você preferir os erros podem ser mostrados na tela:

PHP

Caso deseje alterar o site principal do WP Multisite, é preciso saber o ID do site e usar este ID na definição do wp-config:

PHP

Já o endereço para o site principal é definido da seguinte maneira:

PHP

E da mesma maneira o domínio do site principal:

PHP

Caso um dos sites da rede tenha sido desabilidato ou não aceite mais inscrições:

PHP

Conclusão

Como pode-se ver, existem várias configurações que podem ser definidas no arquivo wp-config que nem sempre são claras. Caso vá mexer em seu site, lembre-se de fazer backup e de testar em um ambiente de testes primeiro antes de aplicar as alterações em um site em produção. Seguro morreu de velho e o desconfiado ainda anda por aí 😉

Fala aí!