Physische Organisation der WordPress Medienbibliothek (Real Media Library plugin)

Ordnerstruktur der Real Media Library

Einführung.

Im obigen Screenshot sehen Sie eine Ordnerstruktur, die mit dem Premium-Plugin Real Media Library erstellt wurde . Jetzt möchte ich ein Erweiterungs-Plugin erstellen, das die Ordnerstruktur in eine physische Ordnerstruktur organisieren kann – RML ist nur visuelle Struktur.

Update # 2 (2017-01-27): Überprüfen Sie die Antwort!

Werfen Sie einen Blick auf Physische Organisation der WordPress Medienbibliothek (Real Media Library Plugin), wo ich ein kostenloses Erweiterungsplugin erstellt habe.

Update # 1 (14.12.2016): Der erste Erfolg: Benutzerdefinierter Thumbnail-Upload-Ordner

Jetzt habe ich ein weiteres Plugin erstellt, mit dem Sie einen benutzerdefinierten Thumbnail-Generator erstellen können. Schau dir diesen Screenshot an:

Echte Thumbnail Generator Upload-Ordner

Warum benutzerdefinierte Thumbnail-Ordner? Benutzerdefinierte Thumbnail-Ordner sind einfacher zu verwalten, da hier die databaseaktualisierungs-URLs nicht gepflegt werden müssen, da sich die Thumbnails immer noch am selben Ort befinden (der von der RML-Erweiterung immer noch nicht geändert wird).

Wenn Sie mehr über den benutzerdefinierten Thumbnail-Generator erfahren möchten, können Sie sich diesen Thread ansehen, in dem ich einen technischen Ansatz erläutert habe. Jede benutzerdefinierte Bildgröße im benutzerdefinierten Upload-Verzeichnis? .

Bitte behalte diesen Thread, denn Anfang 2017 werde ich die Entwicklung der RML-Erweiterung fortsetzen, die die Synchronisation zwischen RML und dem Server-Upload-Ordner ermöglicht. Die Erweiterung ist auch mit dem Plugin “Real Thumbnail Generator” kompatibel, daher sollte die database aktualisiert werden.

Original Beitrag

Mein Erweiterungsziel.

Im Moment bin ich im Ordner “/ Unorganisiert”, das heißt es ist der Ordner / wp-content / uploads /. Wenn ich die Datei (wie Sie auf dem Screenshot sehen) in den Ordner PDFs / SubDir verschiebe, befindet sich die Datei im visuellen Ordner. Jetzt erkennt meine Erweiterung den anderen Ordner als den physischen und zeigt einen kleinen “Knopf” an, der es dem Benutzer erlaubt, ihn auch physisch zu bewegen:

Button zum Physixen

Der Benutzer klickt nun auf den Button “Physix it!” und die Datei sollte nach /wp-content/uploads/pdfs/subdir/Another-Doc.pdf verschoben werden . Ich habe den Move-process bereits erstellt: Ich lese alle Mediendateien für diesen Anhang (inklusive Thumbnails für Bilder) und benutze die PHP-function rename ($ old_file, $ new_file) zusammen mit der WP-function wp_mkdir_p () . Die GUID in der Tabelle wp_posts und die Metadaten in wp_postmeta werden ebenfalls geändert. Wenn alle Dateien verschoben sind, rufe ich die Aktion auf:

 

$ meta ist ein Array:

Bildbeschreibung hier eingeben

Der Schlüssel “Umbenennen” enthält alle Umbenennungsvorgänge (hier können beispielsweise die Thumbnail-Dateien für Bilder sein).

Das Problem: Plugin-Kompatibilität garantieren.

Das Hauptproblem (falls vorhanden) der WordPress-Medienbibliothek besteht darin, dass viele Plugins die Verweise auf Bilder mit vollständigen URLs anstelle der Anhangs-ID speichern. Das heißt, es gibt MySQL-Tabellen mit Spalten, die eine URL zu der angegebenen Datei enthalten. Wie kann ich garantieren, dass ALLE Referenzen mit den physischen Ordnern auf dem neuesten Stand sind ? Ich denke, es ist unmöglich.

Ein möglicher Ansatz.

Ich hake mich in die Aktion ein und aktualisiere die Standardtabellen wie wp_post-> post_content , … mit einer rekursiven REPLACE-statement in SQL.

 recReplace($arr, "post_content"); // function is already finished } ?> 

Die $ rec-Variable ist jetzt eine REPLACE-statement:

 REPLACE(post_content, 'https://example.io/wp-content/uploads/Another-Doc.pdf', 'https://example.io/wp-content/uploads/pdfs/subdir/Another-Doc.pdf') 

Übrigens: Für ein Bild (testimage.jpg) mit allen Thumbnail-Dateien kann es so aussehen:

 REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(post_content, 'https://example.io/wp-content/uploads/testimage-750x350.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-750x350.jpg'), 'https://example.io/wp-content/uploads/testimage-1170x855.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-1170x855.jpg'), 'https://example.io/wp-content/uploads/testimage-256x187.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-256x187.jpg'), 'https://example.io/wp-content/uploads/testimage-1024x748.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-1024x748.jpg'), 'https://example.io/wp-content/uploads/testimage-300x219.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-300x219.jpg'), 'https://example.io/wp-content/uploads/testimage-150x150.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-150x150.jpg'), 'https://example.io/wp-content/uploads/testimage.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage.jpg') 

Was passiert aber, wenn es sich um eine serialisierte Zeichenfolge (JSON) in der databasetabelle handelt? So sieht es aus wie { "image": "http:\/\/example.io\/wp-content\/uploads\/Another-Doc.pdf" } . Was muss ich dem REPLACE-Statement hinzufügen?

Die REPLACE-statement kann nun über alle MySQL-Tabellen verwendet werden, die Bild-URLs enthalten. Ich dachte daran, ein Filter-Array zu erstellen, wo Plugins ihre Tabellen hinzufügen können und meine Erweiterung den Rest erledigt:

 prefix "wp_posts" => array("post_excerpt", "post_content"), "wp_postmeta" => array("meta_value") //... )); ?> 

Das “Umzug” -Logbuch

Ich möchte ein “Protokoll” erstellen, in dem Benutzer Bewegungen rückgängig machen können. Wenn ein Benutzer sieht, dass ein Bild beschädigt ist (zum Beispiel im Slider Revolution-Plugin), kann er den Umzug in den ursprünglichen Ordner rückgängig machen.

Was denkst du über diese Idee? Gibt es eine bessere Lösung? Ich hoffe, ich habe alles auf eine nette Art und Weise erklärt!

Solutions Collecting From Web of "Physische Organisation der WordPress Medienbibliothek (Real Media Library plugin)"

Kostenlose Lösungserweiterung “Physical Custom Upload Folder”

Vor langer Zeit begann ich diesen Thread zu öffnen und jetzt gibt es ein verwendbares Erweiterungs-Plugin für Real Media Library, mit dem Sie Ihren Upload-Ordner physisch verwalten können .

Bildbeschreibung hier eingeben

Schau dir dieses Plugin an: https://wordpress.org/plugins/physical-custom-upload-folder/

Kennen Sie den Ordner wp-content / uploads? Dort werden die Dateien in Jahres- / Monatsordnern gespeichert. Dies kann ein sehr komplizierter und umfangreicher process sein, besonders wenn Sie mit einem FTP-Client wie FileZilla arbeiten.

Bereits hochgeladene Dateien verschieben: Dieses Plugin erlaubt es nicht, die Dateien physisch zu verschieben, wenn Sie eine Datei in der Real Media Library verschieben, da WordPress die URLs an verschiedenen Stellen verwendet. Es ist sehr schwierig, einen solchen process aufrechtzuerhalten. Das funktioniert nur für neue Uploads.