Uploads-Ordner ändern ab WordPress 3.5

Hinweis: Dieser Artikel ist älter als zwei Jahre (letzte Änderung: 15. Februar 2015) und evtl. nicht mehr aktuell.

Seit WordPress 3.5 wundern sich viele, wo denn in den Mediathek-Einstellungen die Pfad-Einstellungen zum Uploads-Ordner (/wp-content/uploads) hin sind.
ehem. Uploads-Einstellungen
Richtig, die Einstellungen sind verschwunden und fest in den WP-Core gewandert.

Damals hatten wir im Artikel „WordPress: CDN und cookieless domain“ beschrieben, wie wir unsere Pfade eingestellt haben, dies ist so jetzt nicht mehr ohne weiteres übers Backend möglich.

Aber auch hier gibt es eine Lösung, ähnlich wie in unserem Artikel „WordPress Plugins verschieben“. Über einen define-Eintrag in der wp-config.php lässt sich der Uploads-Pfad individuell verändern:

define( 'UPLOADS', 'wp-content/uploads' );

In unserem o.g. Beispiel sähe es dann so aus:

define( 'UPLOADS', '/srv/www/htdocs/html/uploads' );

Die Mediathek-Einstellung der „monats- und jahresbasierten Ordner“ funktioniert weiterhin.

Der Vollständigkeit halber wollen wir noch 2 andere Methoden vorstellen, welche diesmal themeabhängig über die functions.php des verwendeten Themes geregelt werden. Die erste Methode verwendet die Funktion update_option(), um die benannte Option in der Datenbank-Tabelle wp_options zu aktualisieren:

update_option('upload_path','/srv/www/htdocs/html/uploads',true);
update_option('upload_url_path','http://subdomain.example.org/uploads',true);

Die zweite Methode geht genau den anderen Weg und ändert die Option ohne den Wert dauerhaft in der Datenbank zu speichern. Es wird sozusagen nur temporär über einen zusätzlichen Filter pre_option_(option name) definiert, in diesem Fall über pre_option_upload_url_path:

function change_upload_url_path() {
    return 'http://subdomain.example.org/uploads';
}
add_filter( 'pre_option_upload_url_path', 'change_upload_url_path' );

Aber nichtsdestotrotz müssen die statischen Bildpfade in allen alten Beiträgen, wie auch in unserem ersten Artikel beschrieben, in der Datenbank angepasst werden:

ZITAT:
Dann müssen wir allerdings in der Datenbank die Einträge in der Tabelle „wp_posts“ ändern, genauer dort die Felder „post_content“ und „guid“. Das kann mit folgenden zwei „Replace“ (ersetzen) SQL-Befehlen erledigt werden:

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.example.org/wp-content/uploads/', 'http://subdomain.example.org/uploads/');
UPDATE wp_posts SET guid = replace(guid, 'http://www.example.org/wp-content/uploads/','http://subdomain.example.org/uploads/');

Somit hätten wir dann alle Mediatheken Bilder auf der Subdomain liegen und sie werden von dort abgerufen.

Empfehle uns: email facebook google plus twitter

Artikel Informationen

  • Erstellt am Montag, 31. Dezember 2012 um 15:42 (Letzte Änderungen 15. Februar 2015, 10:04) und abgelegt unter WordPress mit den Tags: , , ,
  • Kommentare zu diesen Eintrag im Kommentar Feed Feed.
  • Du kannst einen Kommentar hinterlassen. Pingback ist im Augenblick nicht erlaubt.

19
Hinterlasse einen Kommentar

10 Comment threads
9 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
8 Comment authors
  Abonnieren  
neuste älteste beste Bewertung
Benachrichtige mich zu:

[…] Nach dem ich die o. g. Anlei­tung durch­ge­ar­bei­tet habe, funk­tio­nierte der Blog auf dem neuen Ser­ver wun­der­bar. Bis — naja — bis ich den alten Web­ser­ver geleert habe und die Domain­na­men alle zum neuen Pro­vi­der umge­zo­gen habe. Dann waren plötz­lich alle Bil­der, Videos etc. nicht mehr zu sehen. In den Eigen­schaf­ten der Media­thek konnte ich die Ursa­che sehen: Jeder Ein­trag in der Media­thek ver­weist auf den alten Ser­ver. Diese Adresse muss also auch ange­passt wer­den — bei allen Ein­trä­gen in der Daten­bank. Und wie­der wurde ich bei Google fün­dig: (3) https://www.im-tal.net/tipps/wordpress/1181-uploads-ordner-aendern-ab-wordpress-3–5/. […]

Jürgen

Die Technik mit den beiden update_option scheint das Plugin „WP Original Media Path“ zu nutzen: https://wordpress.org/plugins/wp-original-media-path/

Danke für den Plugin-Tipp!

Jürgen

Hallo zusammen,

hmpf… nach dem Beitrag hier hatte ich schon Hoffnung, dass ich die Bilder/Medien außerhalb der WordPress-Installation ablegen kann… dann hat mir aber die Lektüre von https://codex.wordpress.org/Editing_wp-config.php#Moving_uploads_folder leider die Hoffnung wieder zunichte gemacht: „This path can not be absolute. It is always relative to ABSPATH,[…]“. Der Pfad darf also niemals absolut sein. Somit muss man nach anderen Möglichkeiten suchen… hab leider noch keine gefunden.

Viele Grüße
Jürgen

Andere Möglichkeiten haben wir doch auch genannt, z. b. update_option()

Jürgen

„nicht gefunden“ war dahingehend gemeint, dass es keine Code-Änderung sein sollte, die dann evtl. überschrieben wird. Wie im nachgeschobenen Post geschrieben, habe ich dann den Tipp mit update_option auch in ein Plug-in gegossen gefunden. Insofern war Dein Beitrag ein Mosaikstein zur Lösung. Danke!

eizooo

Habe WP 4.1 und versucht über wp-config folgenden Pfad zu meiner Subdomain zu legen
define( ‚UPLOADS‘, ‚/var/www/wp-imageserver.de/images‘);

in WP wird das Verzeichnis erkannt, aber ich kann keine Bilder hochladen obwohl das Verzeichnis und darüber dem Apache User www-data gehört

/var/www/wp-imageserver.de/images kann nicht angelegt werden. Ist das übergeordnete Verzeichnis durch den Server beschreibbar? Was ist zu t un?

WasWas

existiert der Ordner images denn schon im Verzeichnis wp-imageserver.de ? Falls ja, gib dem Ordner images mal testweise die chmod-Rechte 777.

Patrick

Hey,

eine sehr ausführliche Anleitung, großen Respekt.
Nur leider funktioniert das bei mir nicht so ganz.
Meine Serverstruktur sieht folgendermaßen aus:
backend/htdocs/ –> hier findet sich die WP-Installation
media/htdocs/media/uploads/ –> hier sollen die Uploads hinein geladen werden

media. und backend. sind jeweils zwei Subdomains, die selbst auf der selben Ebene liegen.

Wie schaffe ich es nun, in der WordPress-Installation den absoluten Pfad anzugeben? Versuche ich es mit „http://media. …“, erstellt WordPress die Ordnerstruktur „http/:/media/ …“.

Lieben Gruß, Patrick

Kannst du denn nicht den absoluten Serverpfad verwenden? So in der Art:
define( ‚UPLOADS‘, ‚/xxx/xxxx/media/htdocs/media/uploads‘ );

Patrick

„media/htdocs/media/uploads/“ ist bei mir schon der absolute Pfad vom root-Verzeichnis aus, höher komme ich auf dem Server nicht. Hatte es so auch schon probiert, allerdings entsteht dann die Ordnerstruktur:
„backend/htdocs/media/htdocs/media/uploads“
WordPress geht also hier immer von dem Ordner aus, in dem sich die Installation und die config befindet.

Patrick

Okay, mysteriös:
Ich habe es jetzt mal mit
define( ‘UPLOADS’, ‘/../../media/htdocs/uploads’ );
probiert und in der Datenbank wp-options die Einräge
upload_path –> ../../media/htdocs/uploads
und
upload_url_path –> http://media.xxx.de/uploads
gesetzt.
Jetzt lädt WordPress die Dateien auch richtig hoch (auf dem Server befinden sie sich nun unter „media/htdocs/uploads“), allerdings wird in WordPress selbst als absoluter Pfad zum Bild folgender genannt:
http://backend.xxx.de/../../media/htdocs/uploads/2014/01/diederich_f_thumb.jpg
Folglich kann WordPress das Bild auch nicht laden. :/

hast du mal versucht, mit dem PHP Befehl phpinfo(); den absoluten Pfad des Servers auszulesen?

Eine andere Methode wird unverständlicherweise nirgends im Netz erwähnt: Ich habe eine einfache Methode entdeckt, durch die der verschwundene Einstellungsdialog im Backend wieder erscheint. Dazu genügt ein Eintrag in die Konfigurationstabelle der WP-Datenbank.

Hallo,

danke für den Beitrag. Gibt es noch eine Möglichkeit eine Datei speziell in einen individuellen Ordner zu legen um die Semantik dabei zu beachten. Also z.B. Datei Kaufberatung.pdf auch folgendermaßen abzulegen: http://www.domain.xy/kaufberatungthemaxy/kaufberautung.pdf

Das wäre sehr hilfreich. Vielen Dank und Grüße,
Felix

Du könntest das PDF in einen entsprechenden Ordner „kaufberatungthemaxy“ packen und im Artikel manuell dorthin verlinken.

Danke für den Tipp! Auch ich habe es neulich gebraucht.

super vielen dank! genau das habe ich gesucht.

gruss
timo