web-dev-qa-db-de.com

Unerwartete Attribute width und srcset für the_post_thumbnail ();

Ich ändere ein Thema mithilfe eines untergeordneten Themas und muss in einer Vorlagendatei (single.php) ein großes Post-Thumbnail anzeigen, damit ich den folgenden Code habe:

the_post_thumbnail('large');

In Einstellungen> Medien ist die Größe auf maximale Breite = 1024px und maximale Höhe = 1024px eingestellt (ich nehme an, dies sind die Standardeinstellungen in Wordpress). Das Problem ist nun, dass ich auf der Post-Seite diesen HTML-Code bekomme:

<img src="https://example.com/wp-content/uploads/2018/07/example-image-4-1024x682.jpg"
class="attachment-large size-large wp-post-image" alt=""
srcset="https://www.example.com/wp-content/uploads/2018/07/example-image-4-1024x682.jpg 1024w,
https://www.example.com/wp-content/uploads/2018/07/example-image-4-300x200.jpg 300w,
https://www.example.com/wp-content/uploads/2018/07/example-image-4-768x512.jpg 768w,
https://www.example.com/wp-content/uploads/2018/07/example-image-4-272x182.jpg 272w,
https://www.example.com/wp-content/uploads/2018/07/example-image-4.jpg 1280w"
sizes="(max-width: 800px) 100vw, 800px" width="800" height="533">

Das Ergebnis ist, dass ich ein 800 Pixel breites Bild erhalte, anstatt eines echten "großen" Bildes, das 1024 Pixel breit sein sollte. Das Problem scheint im Attribut "Größen" zu liegen, mit dem die maximale Breite auf 800 Pixel festgelegt wird, und im Attribut "Breite", mit dem das Bild auf 800 Pixel festgelegt wird. Die scheinen mir falsch zu sein. Also, was passiert genau? Wie finde ich heraus, wo sich etwas im Thema befindet, damit ich es ändern kann?

In der Dokumentation zu the_post_thumbnail () wurden folgende Filter angezeigt:

post_thumbnail_size
post_thumbnail_html
wp_get_attachment_image_attributes

Also habe ich versucht, nach den Zeichenfolgen "post_thumbnail" und "attachment_image" im Thema zu suchen, aber das hat nichts Sinnvolles gebracht. Also, wonach suche ich noch? Beachten Sie, dass ich einige Plugins installiert habe (wie z. B. Advanced Custom Fileds usw.), aber ich habe versucht, sie zu deaktivieren, und das Problem war immer noch vorhanden. Daher glaube ich, dass die Ursache des Problems das Thema sein muss oder etwas, das ich über Wordpress nicht verstehe .

2
reed

Wenn Sie die Attribute width und height für ein Bild mit Funktionen wie the_post_thumbnail() oder wp_get_attachment_image() generieren, werden die Bilder durch die Funktion image_downsize() geführt. Das Letzte, was diese Funktion ausführt, ist das Ausführen des Abbilds über die Funktion image_constrain_size_for_editor() .

Diese Funktion bestimmt die Breite und Höhe des Bildes basierend auf der angegebenen Größe, in Ihrem Fall large, basierend auf den Einstellungen unter Einstellungen> Medien. Es wird jedoch die maximal mögliche Größe von medium-, medium_large- und large-Bildern auf das Thema eingestellt, für das Inhaltsbreite definiert ist. Wenn in Ihrem Design die Inhaltsbreite als 800 definiert ist, wird die Breite von Bildern mit den Größen medium, medium_large oder large auf 800 begrenzt (benutzerdefinierte Bildgrößen sind nur im Editor davon betroffen).

Wenn Sie die maximalen Abmessungen entfernen möchten, können Sie mit dem Filter editor_max_image_size ein Array mit der gewünschten maximalen Breite und Höhe oder 0 für beide zurückgeben, um die Begrenzung aufzuheben. Sie können die Argumente $size und $context des Filters verwenden, um nur auf large Bilder im Front-End oder Back-End anzuwenden ('display' für Front-End, 'edit' für Admin).

In diesem Beispiel wird die Größenbeschränkung für large Bilder im Front-End aufgehoben:

function wpse_308298_max_image_size( $max_image_size, $size, $context ) {
    if ( $size === 'large' && $context === 'display' ) {
        $max_image_size = [0,0];
    }

    return $max_image_size;
}
add_filter( 'editor_max_image_size', 'wpse_308298_max_image_size' );
1
Jacob Peattie