WordPress: srcset bekommt HTTP statt HTTPS in allen Beiträgen

Lesezeit: 3 Minuten

Benutzer-Avatar
Armfuß

Im WordPress 4.4 Bilder bekommen automatisch a srcset Attribut. Mein Problem damit war folgendes (ich habe es gelöst, während ich diese Frage schrieb, siehe meine Antwort unten):

  • um zu Übertrage alles auf httpsersetzte ich alle src="http://... Referenzen in der Beitragstabelle von src="https://... (Ich habe es später geändert in src="https://... zur Unterstützung beider Protokolle);
  • Die Bilder auf allen Beiträgen erhalten die richtige URL in der src Attribut;
  • jedoch in allen Bildern, die das bekommen srcset Attribut sind die darin enthaltenen URLs immer mit http:// Verweise.

Warum passiert das? Warum werden diese URLs nicht neu aktualisiert https:// Anfänge?

Benutzer-Avatar
Armfuß

Nach längerem Suchen in der wp-includes Ordner, der wp_calculate_image_srcset Methode in der media.php Datei verwendet diese 2 Zeilen:

$image_baseurl = _wp_upload_dir_baseurl();
$image_baseurl = trailingslashit( $image_baseurl ) . $dirname;

Und das $image_baseurl wird tatsächlich die neue URL für die bilden srcset Attribut, dh auch wenn die gesamte URL in der steht wp_postsTabelle und verwendet in der src -Attribut, wird sein Anfang nicht verwendet.

Das bedeutet, wenn Ihre Basis-URL in der wp_options Tisch ist noch drin http://erhalten die Bilder dieses Protokoll und werden nicht standardmäßig von Ihrem Browser angezeigt, wenn Sie in https navigieren.

Um dies zu lösen, müssen Sie nur die URLs in ändern option_value in dem wp_options Tisch zu https:// oder nur // wenn Sie dennoch beide Protokolle unterstützen möchten (doppelter Schrägstrich). Sie können dies in einer einzigen Abfrage tun:

UPDATE `wp_options`
 SET `option_value` = replace(option_value, 'http://', '//')
 WHERE `option_name` IN ('siteurl', 'home')

  • Leider führt die Abfrage dazu, dass WordPress seine Cookies nicht setzen kann, also bricht wp-admin ab :(es versucht, sie auf Pfad //host.name/ zu setzen

    – alamar

    16. November 2016 um 19:28 Uhr

  • @alamar ein Vorschlag, wenn Sie dürfen: Sobald Sie alle Ihre Inhalte auf http übertragen habens und Sie sicher sind, dass Ihre öffentlichen Seiten alle Bilder präsentieren, die Sie nicht brauchen werden // länger. Zu diesem Zeitpunkt können Sie dasselbe Update ausführen, wobei die Ersetzungszeichenfolge „https://“ ist. Ich muss nicht mehr beide Protokolle unterstützen und damals hat das zumindest bei mir funktioniert, aber ich glaube, dass einige Nebenwirkungen auftreten können … Ich habe diese Antwort nicht absichtlich als akzeptiert markiert, also wenn Sie es herausfinden wie man beide Probleme löst, werde ich gerne lesen.

    – Armfuß

    22. November 2016 um 20:44 Uhr

  • Ich habe ein ähnliches Problem, können Sie helfen? Wie konvertiere ich srcset-Links von https in http?

    – Ocker

    21. August 2019 um 10:57 Uhr

Ändern Sie folgende Einstellung im Admin unter Einstellungen->Allgemein:

WordPress-Adresse (URL): https://ihrwebsitename.com
Website-Adresse (URL): https://ihrwebsitename.com

Und drücke [Save Changes] Taste. Aktualisieren Sie schließlich Ihre Seite und Ihr Bild wird in Ihrem Browser mit dem richtigen srcset-Attribut angezeigt.

Benutzer-Avatar
Kotext

Wenn Sie Ihre WordPress-Adresse (URL) nicht in https ändern möchten, fügen Sie diesen Code einfach in die Datei functions.php Ihrer aktiven Themen ein

function codextent_ssl_srcset( $sources ) {
    foreach ( $sources as &$source ) {
        $source['url'] = set_url_scheme( $source['url'], 'https' );
    }
    return $sources;
}
add_filter( 'wp_calculate_image_srcset', 'codextent_ssl_srcset' );

** Fügen Sie dies auch in der obersten Zeile der Datei wp-config.php hinzu.

$_SERVER['HTTPS'] = 'on';

  • Dies war die am wenigsten invasive Lösung für mich, da ich eine Lightsale-Bitnami-Bereitstellung verwende und der Domänenname vollständig von Bitnomi-Funktionen verwaltet wird.

    – Kerkness

    24. März 2020 um 11:31 Uhr

1159660cookie-checkWordPress: srcset bekommt HTTP statt HTTPS in allen Beiträgen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy