Oggi ci siamo imbattuti in un problema che ultimamente è diventato sempre più frequente: da un nuovo cliente abbiamo acquisito un vecchio sito web realizzato con WordPress, lo abbiamo messo in piena sicurezza ripulendolo dalle tonnellate di malware che conteneva e ne abbiamo aggiornato tutti i componenti fondamentali ad eccezione del tema e di un paio di plugin che non vengono più sviluppati da anni.
Tutto funziona splendidamente, soprattutto grazie alle prestazioni fantasmagoriche dei nostri server, ad eccezione di una videogallery che, ahimè, non fa più quel poco che dovrebbe fare, ovvero caricare una sequenza di video in un semplice slider.
L’errore che leggiamo in console è quanto di più criptico possa irrompere nelle vite di un dev alle prime armi, ma per noi decadenti veterani di questo tipo di lavoro si tratta di una vecchia conoscenza:
Uncaught Error: Syntax error, unrecognized expression: [href=#]
Si tratta di una incompatibilità da parte di uno dei vecchi componenti che abbiamo dovuto per forza lasciare inalterati su questo vecchio sito web con le ultime versioni di jQuery messe a disposizione dal core di WordPress.
La soluzione è brutale, aberrante e quasi immorale, ma funziona alla perfezione! Si tratta di agire sul file functions.php del tema che stiamo utilizzando per costringere WordPress ad adottare una vecchia versione di jQuery che non faccia a cazzotti con il codice che stiamo utilizzando:
//jQuery Insert From Google if (!is_admin()) add_action("wp_enqueue_scripts", "my_jquery_enqueue", 11); function my_jquery_enqueue() { wp_deregister_script('jquery'); wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js", false, null); wp_enqueue_script('jquery'); }
Il passo successivo è quello di segnalare la cosa al cliente e fargli avere un preventivo per il rifacimento dei componenti obsoleti che ci ha portato in casa, o ancora meglio dell’intero sito web, ormai datato anche dal punto di vista dell’immagine e dell’usabilità.