bloginfo() e get_template_directory_uri() con SSL?
Ho un tema WordPress che sto cercando di installare su un sito che utilizza esclusivamente SSL. Non esiste una versione non SSL del sito.
Il tema WordPress utilizza varie funzioni come bloginfo('pingback_url'), bloginfo('template_directory'), get_template_directory_uri(), ecc... Tutte le funzioni tipiche di un tema.
Tutte queste funzioni generano link http, non https, e di conseguenza nessuno di essi viene caricato, dato che non esiste una versione non SSL del sito.
Come posso forzare WordPress a usare https per TUTTO?
Prova a installare questo plugin per WordPress. http://wordpress.org/extend/plugins/wordpress-https/installation/ ma assicurati di leggere le istruzioni di installazione poiché ci sono alcune operazioni aggiuntive da fare dopo l'attivazione del plugin.
Se il tuo sito web è su un servizio di bilanciamento del carico che gestisce SSL, il tuo server potrebbe non ricevere alcun valore nella variabile di server $_SERVER['HTTPS'], e $_SERVER['SERVER_PORT'] potrebbe essere 80 quando dovrebbe essere 443 (vedi questa risposta su Stack Overflow per i dettagli).
Se questo è il caso e non puoi far modificare questa impostazione dal tuo hosting provider, potresti dover forzare manualmente e dire a PHP che comunque è in SSL. Imposta i tuoi URL home e sito per utilizzare https, in modo che tutti gli URL generati da WordPress vengano prodotti come URL https. Poi inserisci questo codice in un plugin (ecco uno già pronto, copialo nella cartella dei plugin e attivalo):
// se il sito è configurato per funzionare in SSL, forza il rilevamento SSL!
if (stripos(get_option('siteurl'), 'https://') === 0) {
$_SERVER['HTTPS'] = 'on';
}
NB: questo potrebbe avere effetti indesiderati, perché probabilmente hai del codice (nei plugin o nel tuo codice) che verifica se la pagina è stata caricata via SSL e reindirizza in caso contrario. Il tuo server non sarà più in grado di testare questa condizione! Pertanto, dovresti anche aggiungere del JavaScript alla tua pagina per avere una certa garanzia che le tue pagine sicure vengano caricate via SSL (anche questo è fatto dal plugin già pronto):
<script>
if (document.location.protocol != "https:") {
document.location = document.URL.replace(/^http:/i, "https:");
}
</script>
NB: questa soluzione non è infallibile! Tuttavia, dovrebbe coprire la maggior parte delle situazioni, con l'eccezione di qualcuno che disabilita JavaScript e poi modifica manualmente l'URL per forzarlo nuovamente su http. Se lo fa, forse merita che le sue credenziali della carta di credito vengano vendute a Elbonia.
Volevo solo aggiungere a questo. Avevo un problema simile in cui l'URL veniva mostrato come HTTPS, ma WordPress visualizzava gli URL degli script e degli stili con HTTP e non HTTPS (il che fa sì che non vengano caricati perché i browser non permettono ai siti web di mescolare HTTP e HTTPS). Il motivo di questo problema era che sto usando il Flexible SSL di CloudFlare e la connessione tra l'utente e CloudFlare è sicura, ma la connessione tra CloudFlare e il server web non è sicura (quindi WordPress pensa che HTTPS sia disabilitato). Impostare $_SERVER['HTTPS'] su on risolve questo problema.
SameOldNick
Come nota aggiuntiva, ho installato lo strumento da riga di comando di wp da http://www.electrictoolbox.com/wordpress-enable-disable-plugins-command-line/ per abilitare il plugin.
BTR Naidu