Risoluzione del conflitto tra Polylang e la struttura del permalink di WordPress e dell’errore 404
Questo articolo offre una guida completa per risolvere il problema 404 in cui Polylang interrompe la struttura dei permalink di WordPress, garantendo una navigazione fluida e il corretto funzionamento del tuo sito web multilingue.
Indice
Capire il problema
Polylang è un plugin di WordPress molto utilizzato per creare siti web bilingue o multilingue, permettendo di gestire le traduzioni di post, pagine, media, categorie e tag. Una delle caratteristiche di Polylang è la gestione dei permalink, che include prefissi linguistici o domini diversi per le varie lingue. Tuttavia, questa funzionalità può interferire con le impostazioni predefinite dei permalink di WordPress.
Il problema principale risiede nel modo in cui Polylang gestisce i permalink, modificando l’opzione rewrite_rules
all’interno di WordPress. WordPress rigenera occasionalmente queste regole di riscrittura, sovrascrivendo le impostazioni personalizzate di Polylang, il che può causare la rottura dei permalink e generare errori 404 per i visitatori del sito.
La soluzione: un approccio al codice personalizzato
Per risolvere il conflitto tra Polylang e le strutture dei permalink di WordPress, è possibile utilizzare un frammento di codice personalizzato. Questo codice impedisce a WordPress di sovrascrivere le impostazioni dei permalink personalizzati di Polylang rimuovendo l’opzione rewrite_rules
in determinate condizioni. Ecco come procedere:
Passaggio 1: accedi al file functions.php
del tuo tema
La correzione consiste nell’aggiungere una funzione personalizzata al file functions.php
del tuo tema. Puoi accedere a questo file tramite la dashboard di WordPress andando su Aspetto > Editor del tema. In alternativa, puoi usare un client FTP per modificare il file direttamente sul tuo server.
Passaggio 2: Inserisci il codice personalizzato
Copia e incolla il seguente frammento di codice nel tuo file functions.php
, preferibilmente alla fine:
add_action(‘wp’, ‘polylang_remove_rewrite_rules’);
function polylang_remove_rewrite_rules() {
if (function_exists(‘pll_the_languages’)) {
delete_option(‘rewrite_rules’);
}
}
Questo codice si aggancia all’azione wp
di WordPress, che viene eseguita dopo il caricamento di WordPress ma prima dell’invio delle intestazioni. La funzione polylang_remove_rewrite_rules
verifica se Polylang è attivo (controllando l’esistenza della funzione pll_the_languages
). Se Polylang è attivo, elimina l’opzione rewrite_rules
dal database di WordPress, impedendo a WordPress di sovrascrivere la struttura del permalink personalizzata di Polylang.
Conclusione
L’integrazione di Polylang con WordPress offre una soluzione potente per creare siti web multilingue, ma possono sorgere conflitti come quello descritto qui, che influenzano la navigazione del sito e l’esperienza utente. Implementando la soluzione di codice personalizzato fornita, puoi garantire che i permalink del tuo sito web rimangano intatti, consentendo ai visitatori di accedere senza problemi ai contenuti nella loro lingua preferita. Ricorda di eseguire il backup del tuo sito web prima di apportare modifiche per evitare potenziali problemi.
Se incontri difficoltà o se il problema persiste dopo aver applicato questa correzione, considera di contattare le community di supporto di WordPress e Polylang o di cercare assistenza professionale. La natura collaborativa dell’ecosistema WordPress garantisce che l’aiuto sia sempre disponibile per chi ne ha bisogno.