Errore WPML per indice mancante: la tabella wp_options si riempie di voci multiple di wpml_translation_services

Uno dei nostri utenti utilizzava WP Staging Pro insieme a WPML (incluso il Translation Management) su diversi siti web. Su uno in particolare, il push dal sito di staging a quello live tramite WP Staging Pro causava immediatamente il riempimento della tabella wp_options con voci aventi wp_namewpml_translation_services‘. Non appena venivano eliminate, non venivano create altre voci… fino al successivo push da staging a live. Abbiamo ricondotto questa voce al WPML Translation Management. Se è installato solo WP Staging Pro o solo WPML Translation Management, questa voce non viene creata, ma quando entrambi sono installati e le modifiche vengono spinte da staging a live, il problema si ripresenta su questo specifico sito. Il supporto WPML ci ha fornito una soluzione a questo problema che vogliamo pubblicare qui per chiunque riscontri lo stesso errore: Sembra che il problema sia dovuto alla mancanza di indicizzazione sulla tabella wp_options. L’indice della tabella options è molto specifico e cruciale, e qualsiasi plugin o tema potrebbe creare problemi in sua assenza. Per favore, prova i seguenti passaggi dopo un backup completo del sito:

  1. Accedi al server del database utilizzando PHPMyAdmin o strumenti simili.
  2. Scegli il database ed esegui prima le seguenti query: 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. Poi esegui la seguente query per indicizzare la tabella options: ALTER TABLE `wp_options` ADD UNIQUE `option_name` (`option_name`);
  4. Crea un nuovo sito di staging, perché c’è un’alta probabilità che lo stesso bug si ripresenti sul sito di staging esistente.
  5. Apporta modifiche al nuovo sito di staging e fai il push verso il sito live.
  6. Quindi verifica se stai ottenendo più voci per wpml_translation_services oppure no.
Rene Hermenau

Autore: Rene Hermenau

Informazioni sull'autore: René Hermenau è il fondatore di WP STAGING. Si occupa di backup WordPress, staging, migrazioni, gestione dei database e flussi di deployment sicuri.