Erro WPML por falta de índice: a tabela wp_options é preenchida com várias entradas de wpml_translation_services

Um de nossos usuários estava executando o WP Staging Pro junto com o WPML (incluindo o gerenciamento de traduções) em vários sites. Em um deles, em particular, enviar o site de staging para o site em produção usando o WP Staging Pro fazia com que a tabela wp_options fosse imediatamente preenchida com entradas com o wp_namewpml_translation_services‘. Assim que elas eram excluídas, não eram criadas mais entradas… até o próximo envio de staging para produção. Rastreamos essa entrada até o WPML Translation Management. Se apenas o WP Staging Pro ou apenas o WPML Translation Management estiver instalado, essa entrada não é criada, mas quando ambos estão instalados e as alterações são enviadas de staging para produção, o problema reaparece neste site em particular. O suporte do WPML nos forneceu uma solução para esse problema que queremos publicar aqui para qualquer pessoa que enfrente o mesmo erro: Parece que o problema ocorreu porque está faltando indexação na tabela wp_options. O índice da tabela options é muito específico e fundamental, e qualquer plugin ou tema pode causar problemas se ele estiver ausente. Por favor, tente os seguintes passos após um backup completo do site:

  1. Acesse o servidor do banco de dados usando PHPMyAdmin ou ferramentas similares.
  2. Escolha o banco de dados e execute primeiro as seguintes consultas: DELETE FROM `wp_options` WHERE `option_name` = 'wpml_dependencies:needs_validation'; DELETE FROM `wp_options` WHERE `option_name` = 'jetpack_callables_sync_checksum'; DELETE FROM `wp_options` WHERE `option_name` = 'gf_upgrade_lock'; DELETE FROM `wp_options` WHERE `option_name` = 'wpstg_license_key'; DELETE FROM `wp_options` WHERE `option_name` = 'wpstg_license_status'; DELETE FROM `wp_options` WHERE `option_name` = 'wpstg_settings'; DELETE FROM `wp_options` WHERE `option_name` = 'fs_accounts'; DELETE FROM `wp_options` WHERE `option_name` = 'jetpack_plugin_api_action_links'; DELETE FROM `wp_options` WHERE `option_name` = 'jpsq_sync_checkout'; DELETE FROM `wp_options` WHERE `option_name` = 'stats_cache';
  3. Em seguida, execute a consulta a seguir para indexar a tabela options: ALTER TABLE `wp_options` ADD UNIQUE `option_name` (`option_name`);
  4. Crie um novo site de staging, pois há uma grande chance de o mesmo bug persistir no site de staging existente.
  5. Faça alterações no novo site de staging e envie para o site em produção.
  6. Em seguida, verifique se você está recebendo múltiplas entradas para wpml_translation_services ou não.
Rene Hermenau

Autor: Rene Hermenau

Sobre o autor: René Hermenau é o fundador do WP STAGING. Ele trabalha com backups do WordPress, ambientes de staging, migrações, gestão de bases de dados e fluxos de implantação seguros.