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?
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_posts
Tabelle 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')
Ä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.
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';