web-dev-qa-db-de.com

Wie deaktiviere ich reaktionsschnelle Bilder in WP 4,4?

Ich habe meine 4.3.1-Installation erfolgreich auf alle https konvertiert. Nach dem Update auf 4.4. Ich habe ein Problem mit dem neuen Attribut srcset. Während das Attribut src für Bilder mit https festgelegt wird, lautet das Attribut srcset http. Dies führt dazu, dass Browser überhaupt kein Bild anzeigen.

Während ich auf eine bessere Lösung warte, möchte ich die Einstellung des Attributs srcset deaktivieren, sodass alle Bilder nur ein Attribut src haben. Wie mache ich das?

38
brokkr

Hier sind einige Dinge, die Sie versuchen könnten, die Unterstützung für responsive Images in 4.4 zu entfernen:

/**
 * Disable responsive image support (test!)
 */

// Clean the up the image from wp_get_attachment_image()
add_filter( 'wp_get_attachment_image_attributes', function( $attr )
{
    if( isset( $attr['sizes'] ) )
        unset( $attr['sizes'] );

    if( isset( $attr['srcset'] ) )
        unset( $attr['srcset'] );

    return $attr;

 }, PHP_INT_MAX );

// Override the calculated image sizes
add_filter( 'wp_calculate_image_sizes', '__return_empty_array',  PHP_INT_MAX );

// Override the calculated image sources
add_filter( 'wp_calculate_image_srcset', '__return_empty_array', PHP_INT_MAX );

// Remove the reponsive stuff from the content
remove_filter( 'the_content', 'wp_make_content_images_responsive' );

aber wie von @cybmeta erwähnt, kann das Problem woanders liegen.

Erzwinge https auf srcset

Sie könnten mit dem wp_calculate_image_srcset-Filter ein wenig debuggen und sogar Folgendes versuchen quick-fix :

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

}, PHP_INT_MAX );

um das url Schema auf https zu setzen. Ein anderer Ansatz wäre es, einen schemenlosen // zu haben.

Überprüfen Sie den Codex auf weitere set_url_scheme() -Optionen:

$source['url'] = set_url_scheme( $source['url'], null );        
$source['url'] = set_url_scheme( $source['url'], 'relative' );

Aber Sie sollten versuchen, tiefer zu graben und die Ursache zu finden.

Aktualisieren:

Wir könnten früher aus der wp_calculate_image_srcset() -Funktion aussteigen mit:

add_filter( 'wp_calculate_image_srcset_meta', '__return_empty_array' );

verwenden Sie dann die Filter wp_calculate_image_srcset oder max_srcset_image_width.

Ebenfalls gemäß Ticket # 41895 aktualisiert, um ein leeres Array anstelle von false/null zurückzugeben.

44
birgire

Der einfachste und sauberste Weg, dies zu tun, ist einfach dies:

add_filter( 'wp_calculate_image_srcset', '__return_false' );

Um das zu wiederholen, was die meisten anderen Leute sagen, ist srcset eine gute Idee und die Zukunft (jetzt bewährte Methode). Wenn Sie jedoch eine schnelle Lösung benötigen, um Ihre Website funktionsfähig zu halten, erledigt das obige Snippet die Aufgabe, ohne sie zu hacken.

Quelle: WP Kernblog

13
Trevor

Der Grund, warum die URLs in Ihren Attributen srcset fälschlicherweise HTTPS anzeigen, ist höchstwahrscheinlich, dass die URLs für alle Bilder mit dem Wert der Option siteurl in Ihrer Tabelle wp_options erstellt wurden. Wenn Sie Ihr Frontend über HTTPS bedienen, sollten Sie diese Werte auch ändern (über Einstellungen> Allgemein).

Hier ist das entsprechende Ticket für das WordPress-Issue-Tracking-System: https://core.trac.wordpress.org/ticket/34945

7
joemcgill

Dadurch wird der srcset-Code deaktiviert, indem alle Bilder entfernt werden, die breiter als 1 Pixel sind.

add_filter( 'max_srcset_image_width', create_function( '', 'return 1;' ) );

Auf lange Sicht sollten Sie versuchen, das eigentliche Problem zu beheben. Dies funktioniert jedoch, wenn Sie eine schnelle Lösung benötigen.

5
Otto

Stellen Sie unter Einstellungen/Allgemein sicher, dass Ihre WordPress-Adresse (URL) und Ihre Site-Adresse (URL) auf https://IhreDomain.de eingestellt sind.

Siehe http://wptavern.com/how-to-fix-images-not-loading-in-wordpress-4-4-while-using-ssl

Joe McGill, der dazu beigetragen hat, reaktionsschnelle Bilder in WordPress zu integrieren, antwortete auch im Forenthread und bestätigte, dass Crees Vorschlag korrekt ist: „Wenn Sie HTTPS im Front-End ausführen, sollten Sie die URLs für Ihr Zuhause und Ihre Site ändern URL in Einstellungen> Allgemein, damit sie das HTTPS-Schema verwenden “, sagte er.

2
user2969141