verkleinerte Bilder im Media Verzeichnis separat ablegen

Estimated reading: 2 minutes 258 views

Ab WordPress: 5.x

Um WordPress so zu konfigurieren, dass Uploads in verschiedenen Ordnern organisiert werden und die verkleinerten Versionen separat abgelegt werden, ist eine Anpassung des Standardspeicherorts erforderlich. Hier sind die Schritte und eine mögliche Lösung:


1. Upload-Ordnerstruktur anpassen

Die Standardordnerstruktur in WordPress speichert alle Uploads unter /wp-content/uploads/. Um eine neue Ordnerstruktur zu verwenden, kannst du den Speicherort mit Hilfe des upload_dir-Filters ändern.

Ein Beispiel, um Uploads in Jahres-/Monatsordnern innerhalb eines benutzerdefinierten Verzeichnisses zu speichern:

add_filter('upload_dir', function ($upload) {
    $custom_dir = '/custom-uploads';
    $upload['basedir'] = WP_CONTENT_DIR . $custom_dir;
    $upload['baseurl'] = content_url($custom_dir);
    $upload['path'] = $upload['basedir'] . $upload['subdir'];
    $upload['url'] = $upload['baseurl'] . $upload['subdir'];
    return $upload;
});

2. Verkleinerte Dateien separat speichern

Die verkleinerten Bilder werden von WordPress automatisch während des Upload-Prozesses erzeugt. Um diese Dateien an einem anderen Ort zu speichern, kannst du ebenfalls den upload_dir-Filter in Kombination mit einer Anpassung der Bildverarbeitung verwenden.

Hier ist ein Beispiel:

add_filter('wp_generate_attachment_metadata', function ($metadata, $attachment_id) {
    // Hole den Upload-Pfad
    $upload_dir = wp_upload_dir();

    // Neuer Ordner für verkleinerte Bilder
    $resized_folder = WP_CONTENT_DIR . '/resized-images/';

    // Erstelle den Ordner, falls er nicht existiert
    if (!file_exists($resized_folder)) {
        wp_mkdir_p($resized_folder);
    }

    // Verschiebe die verkleinerten Dateien
    foreach ($metadata['sizes'] as $size => $file_info) {
        $original_path = $upload_dir['basedir'] . '/' . $file_info['file'];
        $new_path = $resized_folder . $file_info['file'];

        if (file_exists($original_path)) {
            rename($original_path, $new_path);
        }

        // Passe den URL in den Metadaten an
        $metadata['sizes'][$size]['file'] = $new_path;
    }

    return $metadata;
}, 10, 2);

3. Vorteile der Trennung

  • Übersichtlichkeit: Originale und verkleinerte Dateien sind getrennt, was eine bessere Organisation ermöglicht.
  • Performance: Backups oder Synchronisierungen können zielgerichteter erfolgen.
  • Caching: Wenn verkleinerte Bilder in einem separaten Ordner liegen, kannst du gezielt optimierte Caching-Strategien anwenden.

4. Zusätzliche Tipps

  • Regelmäßige Bereinigung: Nutze ein Plugin oder ein Script, um nicht verwendete verkleinerte Bilder automatisch zu löschen.
  • Custom Storage: Wenn du viele Bilder verwaltest, könnte auch ein externer Speicherdienst wie Amazon S3 in Betracht gezogen werden, um Speicherplatz und Serverlast zu sparen.

verkleinerte Bilder im Media Verzeichnis separat ablegen