Bin neu bei WordPress, wenn ich ein Bild hochlade, schneidet WordPress automatisch in seine eigenen Größen ab, die ich im Medienbereich nicht erwähnt habe (Einstellungen »Medien).
Einstellungen, die ich in Medien gespeichert habe, sind:
Und wenn ich das Verzeichnis einchecke, schneide ich automatisch in diese Größen:
Wie ist das passiert?
WordPress ist standardmäßig so konzipiert, dass drei Arten von Zuschneiden aller hochgeladenen Bilder (Medien) erstellt werden:
Es ist erforderlich, die Geschwindigkeit der Website bei Bedarf in verschiedenen Größen zu gewährleisten. Also, mit dem Hochladen des Originalbildes würde es mindestens 4 Dateien geben –
Wie Sie bereits wissen, können Sie aus /wp-admin/options-media.php
die Abmessungen der Standardgröße ändern. Sie können also die Standardgrößen für Ihre Zwecke verwenden. Aber wenn Sie noch eine andere Größe als die drei benötigen, können Sie mit WordPress auch neue Bildgrößen hinzufügen.
Wenn add_image_size()
function add_image_size()
mit dem gewünschten Parameter verwenden, können Sie eine neue Größe für Ihre Site hinzufügen. Verwenden Sie die function in Ihrer functions.php
, um Ihre gewünschte Bildgröße hinzuzufügen:
add_image_size( $name, $width, $height, $crop );
Woher –
$name
: string schreibe den Namen in ein einzelnes Zitat, zB 'portfolio'
$width
: integer Schreibe die gewünschte Breite, also 500
(in px)
$height
: integet schreibe die gewünschte Höhe, also 300
(in px)
$crop
: boolean write true
wenn das Bild scharf abgeschnitten werden soll, andernfalls false
In der Regel können wir verschiedene ausgewählte Bilder an einem beliebigen Ort unseres Themas aufrufen, indem Sie Folgendes verwenden:
the_post_thumbnail( 'medium' ); //it will display only the medium size of the original image
Wenn Sie Ihre neue Größe verwenden möchten, verwenden Sie:
the_post_thumbnail( 'portfolio' ); //as I named my size as 'portfolio'
WARNUNG: Da WordPress standardmäßig 3 anpassbare Bildgrößen erzeugt, erstellt es 4 Dateien für jedes Bild. Wenn Sie weitere neue Größen verwenden, erhöht sich die Anzahl der Dateien auf Ihrem Website-Host. Die Verwendung von mehr Bildgrößen ist daher eine Frage des Platzbedarfs auf Ihrer Website. Dadurch werden mehr Website-Bereiche belegt.
Und nach dem Hinzufügen jeder neuen Bildgröße ist ein wichtigstes Plugin:
» Thumbnail neu erstellen – WordPress Plugin
In Wirklichkeit kann die neu zugewiesene Bildgröße nur in neu hochgeladenen Bildern verfügbar sein. Um also die neue Größe für alle zuvor hochgeladenen Bilder zu erhalten, müssen Sie das Plugin installieren und alle Miniaturbilder neu generieren. Es wäre eine einmalige Maßnahme, die für immer bestehen würde *.
Und Ihre wichtigste Antwort sollte sein:
Geschwindigkeit der Website: WordPress schneidet Bilder aus, um die Geschwindigkeit der Website zu erhöhen. Wenn Sie Google PageSpeed verwenden, wissen Sie Folgendes:
Serve skalierte Bilder
Die richtige Dimensionierung von Bildern kann viele Datenbytes speichern.
Erfahren Sie mehr
Wie Sie bereits vorgeschlagen haben, kann Ihr Plugin, wenn es eine ähnliche add_image_size()
-function verwendet, eine neue Bildgröße erstellen. Wenn Sie nach der Deaktivierung Ihrer Plugins das Thumbnails-Plugin zum Regenerieren der Miniaturbilder verwenden, erhalten Sie die tatsächlichen Größen. Wenn das nicht hilft, dann überprüfe die functions.php
deines Themes oder eine Datei mit zusätzlichen functionen für die functions.php
add_image_size()
, und jetzt weißt du, was zu tun ist.
Ja, WordPress ändert die Größe und schneidet alle Bilder ab, je nachdem, was das Thema @Gerard in seiner Antwort bereits definiert hat. Also ist das letzte boolesche Argument für add_image_size()
zu beschneiden oder nicht. Beachten Sie, dass dies nicht die Position des Beschnitts definiert. Um dieses Verhalten zu ändern, schauen Sie sich diese Antwort an .
Wie Sie bereits in der Quelle von add_image_size()
, verwendet WP die global $_wp_additiona_image_sizes
, um die Einstellungen für Ihre global $_wp_additiona_image_sizes
zu speichern und zu verwalten. Wenn Sie nun ein Bild hochladen, kommt die class WP_Image_Editor
ins Spiel und ruft – abhängig von den auf Ihrem Server aktivierten PHP-Erweiterungen – entweder WP_Image_Editor_GD
oder WP_Image_Editor_Imagick
. Jetzt haben beide Singletons eine resize()
-Methode, die image_resize_dimensions()
. Am Ende image_resize_dimensions()
das Bild nicht an oder beschneidet es. Es berechnet nur die Werte.
Dies geschieht durch die Methode crop()
in der Imagick-class und durch Verwendung von PHPs nativem imagecopyresampled()
innerhalb der GD-class.
Zunächst haben wir viele Möglichkeiten:
image_resize_dimensions()
Sie den gesamten process kurz und lassen Sie image_resize_dimensions()
arbeiten. Wir werden die spätere Methode hier verwenden. Fühlen Sie sich frei, Ihre eigene Lösung als separate Antwort hinzuzufügen. Hier ist, was Core uns bietet: Ein Filter, der alle Parameter enthält.
$output = apply_filters( 'image_resize_dimensions', null, $orig_w, $orig_h, $dest_w, $dest_h, $crop );
Jetzt ist das erste Argument null
, was dem core in der nächsten Zeile sagt, ob wir intern überschreiben wollen, was diese function tut – und sie durch unser eigenes Verhalten ersetzen – oder nicht. Wenn wir also etwas von null
, dann wird dies der core verwenden. Denken Sie daran, dass Sie dort alles image_resize_dimensions()
können, aber Core wird immer den gleichen Rückgabewert erwarten wie image_resize_dimensions()
standardmäßig. Aus den Inline-Kommentaren:
Das Rückgabearray stimmt mit den Parametern von
imagecopyresampled()
:
int dst_x, int dst_y,
int src_x, int src_y,
int dst_w, int dst_h,
int src_w, int src_h
Jetzt, um nur den Ausschnitt zu deaktivieren, müssten wir die ganzen Interna ersetzen (mit anderen Worten: klonen) – etwas, das wir vermeiden wollen. Daher verwenden wir einen “Einmalfilter”, der sich selbst deaktiviert. Wir tun das, um die Interna zu benutzen, aber wir werden einfach das los, was wir nicht brauchen.
< ?php defined( 'ABSPATH' ) or exit; /* Plugin Name: (#124009) Disable image crop */ add_filter( 'image_resize_dimensions', 'wpse124009DisableCrop', 10, 6 ); function wpse124009DisableCrop( $enable, $orig_w, $orig_h, $dest_w, $dest_h, $crop ) { // Instantly disable this filter after the first run remove_filter( current_filter(), __FUNCTION__ ); return image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, false ); }
Jetzt ist das Zuschneiden überall deaktiviert. Wenn Sie Multisite betreiben oder nicht darüber nachdenken wollen, ob dieses Plugin aktiviert ist, gehen Sie es einfach als Mu-Plugin ein.
Bitte beachten Sie, dass oben nicht getestet, aber nach dem Lesen corequelle von meinem Kopf abgeschrieben.
Weitere Informationen zu den Bildbearbeitungsklassen in den Folien von Marko von WordCamp Europe und dem Video zur Präsentation finden Sie auf WordPress.tv .
Normalerweise liegt es daran, dass ein WordPress-Theme die Thumbnails auf seinem Code verwendet: in Loops, Galerien usw. Er ist in der Datei functions.php definiert:
add_image_size( $name, $width, $height, $crop );
Zum Beispiel so:
add_theme_support('post-thumbnails'); add_image_size('custom-thumbnail', 80, 80, true ); add_image_size('medium-thumbnail', 180, 120, true ); add_image_size('large-thumbnail', 571, 300, true );
Ich empfehle Ihnen nicht, den Code zu entfernen, wenn Sie das gute functionieren Ihres Themas wirklich behalten möchten. Wenn Sie es entfernen möchten, müssen Sie die Aufrufe in den anderen Dateien löschen, in denen es verwendet wird. häufig in der Datei loop.php.
Plugins und Designs können ihre eigenen Miniaturansichten definieren. WordPress konvertiert alle neu hochgeladenen Bilder in alle registrierten Größen.