bloginfo() și get_template_directory_uri() cu SSL?
Am o temă WordPress pe care încerc să o instalez pe un website care folosește exclusiv SSL. Nu există o versiune non-SSL a site-ului.
Tema WordPress utilizează diverse funcții precum bloginfo('pingback_url'), bloginfo('template_directory'), get_template_directory_uri(), etc... Toate funcțiile tipice pentru o temă.
Toate aceste funcții generează linkuri http, nu https, așadar niciunul nu se încarcă, deoarece nu există o versiune non-SSL a site-ului.
Cum pot forța WordPress să folosească https pentru TOT?
încearcă să instalezi acest plugin WordPress. http://wordpress.org/extend/plugins/wordpress-https/installation/ dar citește instrucțiunile de instalare deoarece are câteva lucruri suplimentare de făcut după activarea plugin-ului.
Dacă site-ul tău este pe un serviciu de load-balancing care gestionează SSL, atunci serverul tău s-ar putea să nu primească nimic în variabila server $_SERVER['HTTPS'], iar $_SERVER['SERVER_PORT'] poate fi 80 atunci când ar trebui să fie 443 (vezi acest răspuns Stack Overflow pentru detalii).
Dacă aceasta este situația și nu poți determina gazda să schimbe asta, atunci poate fi necesar să forțezi manual și să-i spui PHP că totuși este SSL. Setează URL-urile de acasă și ale site-ului să folosească https, astfel încât toate URL-urile generate de WordPress să fie https. Apoi adaugă acest cod într-un plugin (iată unul gata făcut, copiază-l în folderul de plugin-uri și activează-l):
// dacă site-ul este setat să ruleze pe SSL, atunci forțează detectarea SSL!
if (stripos(get_option('siteurl'), 'https://') === 0) {
$_SERVER['HTTPS'] = 'on';
}
Notă: acest lucru poate avea efecte adverse, deoarece probabil ai cod (în plugin-uri sau în propriul cod) care verifică dacă pagina a fost încărcată prin SSL și redirecționează dacă nu a fost. Serverul tău nu va putea testa acest lucru acum! Prin urmare, ar trebui să adaugi și niște JavaScript pe pagină pentru a avea o anumită siguranță că paginile tale securizate vor fi încărcate prin SSL (acest lucru este făcut și de plugin-ul gata făcut):
<script>
if (document.location.protocol != "https:") {
document.location = document.URL.replace(/^http:/i, "https:");
}
</script>
Notă: acest lucru nu este infailibil! Cu toate acestea, ar trebui să prindă majoritatea situațiilor, o excepție fiind cineva care dezactivează JavaScript și apoi editează URL-ul pentru a-l forța înapoi la http. Dacă fac asta, poate merită să le fie vândute credențialele de card către Elbonia.
Am vrut doar să adaug la asta. Am avut o problemă similară unde URL-ul apărea ca HTTPS, dar WordPress afișa URL-urile scripturilor și stilurilor cu HTTP și nu HTTPS (ceea ce le face să nu se încarce deoarece browserele nu permit site-urilor să amestece HTTP și HTTPS). Motivul acestei probleme a fost că folosesc CloudFlare's Flexible SSL și conexiunea între utilizator și CloudFlare este securizată, dar conexiunea între CloudFlare și serverul web nu este securizată (astfel WordPress crede că HTTPS este dezactivat). Setarea $_SERVER['HTTPS'] la on rezolvă această problemă.
SameOldNick
Ca o notă suplimentară, am instalat wp command line tool de la http://www.electrictoolbox.com/wordpress-enable-disable-plugins-command-line/ pentru a activa pluginul.
BTR Naidu