MAMP: WordPress-Themes und Plugins über Symlinks zentral verwalten

Vor ein paar Monaten hatte ich eine Weile mit Local von Flywheel als lokale Entwicklungsumgebung gearbeitet. Inzwischen bin ich wieder zurück zu MAMP gewechselt. Mehr dazu in diesem Artikel.

Eine Eigenschaft von Local, die mir besonders gut gefiel, war der Volumes Manager. Damit konnte man Themes und Plugins für alle Hosts zentral verwalten. Alle lokalen Sites und alle WordPress-Installationen greifen dann auf dieselben Themes und Plugins zu. Das ist zum Entwickeln sehr praktisch, weil es keine Doubletten gibt und keine Verwirrung mit Versionen.

Diese Funktion kann man auch in MAMP nachbilden. Man muss dafür ins Terminal wechseln, aber was man dort tun muss, ist denkbar einfach.

  1. Plugins und Themes an zentraler Stelle ablegen.
    In meinem Fall ist das der Ordner sites
  2. Im Terminal zum Verzeichnis navigieren, in der die lokalen Sites liegen, die mit MAMP verwaltet werden.
    Bei mir ist es das Verzeichnis sites und ich navigiere dort hin mit cd sites
  3. Einen Symlink für das Theme-Verzeichnis setzen
    ln -s ~/Sites/themes ~/Sites/name-des-projekts/wp-content
  4. Einen Symlink für das Plugin-Verzeichnis setzen
    ln -s ~/Sites/plugins ~/Sites/name-des-projekts/wp-content

Im wp-content-Verzeichnis des Projekts erscheint dann jeweils ein Alias des zentralen Theme- bzw. Plugin-Verzeichnisses.

Damit es keine Fehlermeldung gibt, muss man die Verzeichnisse themes und plugins im wp-content-Verzeichnis vor der Aktion umbenennen. Es reicht ein kleiner underscore vor dem Namen, z.B. so: _themes.

UPDATE

Es ist auch denkbar, die Sprachdateien zentral zu verwalten. Standardmäßig liegen die Sprachdateien in einem Verzeichnis languages innerhalb des Verzeichnisses des jeweilen Themes oder Plugins.
Wenn man an den Sprachdateien etwas ändert, werden die Dateien beim nächsten Update wieder überschrieben und die Änderungen gehen verloren.

Das lässt sich verhindern, indem man die Sprachdateien in das Verzeichnis wp-content auslagert. Dort heisst das Verzeichnis dann auch wieder languages, aber es hat noch zwei Unterverzeichnisse, eines für plugins und eines für themes:

wp-content
– languages
–– plugins
–– themes

In den beiden Verzeichnissen themes und plugins können alle Sprachdateien sicher gelagert werden.

Vorausgesetzt, in meinem Verzeichnis sites gibt es neben den beiden Verzeichnissen für Themes und Plugins nun auch ein zentrales Verzeichnis für die Sprachdateien namens languages, dann sähe der Befehl für den Symlink für das zentrale Sprachdateien-Verzeichnis so aus:
ln -s ~/Sites/languages ~/Sites/name-des-projekts/wp-content

WICHTIG
Die Sprachdateien dürfen nicht – wie im Theme-Verzeichnis – einfach de_DE.po heissen. Sonst wäre ja nicht klar, welches Theme oder Plugin gemeint ist. Die Dateinamen müssen mit dem Slug* des Themes/Plugins beginnen, also z.B. so
twentythirteen-de_DE.po

*Der Slug/die Textdomain steht z.B. im Head der style.css

(Vielen Dank, Bego, für die Anregung)

Hat Dir der Artikel weitergeholfen?

Kommentare, die nichts mit dem jeweiligen Artikel zu tun haben, oder die (weitgehend) inhaltslos sind und keinen Mehrwert für andere Leserinnen und Leser bieten, veröffentlichen wir nicht.

5 Kommentare zu “MAMP: WordPress-Themes und Plugins über Symlinks zentral verwalten

  • Hallo Kirsten, Danke für den Tipp. Eine Frage dazu: sollte das Verzeichnis languages nicht auch gleich zentral abgelegt werden? In dem Verzeichnis sind nicht nur die Übersetzungen des Core, sondern neuerdings auch von vielen Themes und Plugins aus dem WordPress-Verzeichnis. Das würde unnötige Aktualisierungen der Übersetzung vermeiden.

    • Hallo, Bego,

      das ist ein interessanter Gedanke! Und einen eigenen Artikel wert.
      Wir meinen schon dasselbe?
      Ich meine den Speicherort des languages-Verzeichnises. Per Default ist das das Theme- bzw. Plugin-Verzeichnis. Dadurch sind Änderungen in den Sprachdateien nach jedem Update perdu. Wenn man die languages-Files zentral im wp-content-Verzeichnis speichert, bleiben die Änderungen erhalten.
      Hm. Müsste man auch per Terminal-Befehl rumschieben können.

      Schöne Grüße

      Kirsten

  • Eine Frage: Gibt es dafür nicht eine eigene Konfigurationsmöglichkeit per wp-config-php?
    https://codex.wordpress.org/Editing_wp-config.php#Moving_wp-content_folder (auch einzeln für Themes und Plugins)

    Die Sprachdateien liegen übrigens nicht standardmäßig in einem Ordner namens languages. Das ist bloß Konvention. Der load_plugin_textdomain-Aufruf (bzw. load_theme_textdomain) kann jeden beliebigen Ordner angeben (typisch ist auch lang, langs, i18n, etc.).

    Im languages-Ordner innerhalb von /wp-content werden die Language Packs gespeichert. Ab WordPress 4.6 werden diese zuerst geladen, bevor im Plugin/Theme-Ordner nach einer Übersetzungsdatei geschaut wird. Vorher hatten die Sprachdateien im Plugin/Theme-Verzeichnis Priorität.

    • Hallo, Torsten!

      Danke für den Tipp. Man sollte immer erst in den Codex gucken ;o)
      So wie ich das verstehe, kann ich dasselbe (alle Hosts gucken auf ein Verzeichnis) auch über der wp-config.php erreichen. Zumindest für Plugin-Verzeichnis scheint es relativ einfach zu gehen. Ich habe es aber noch nicht ausprobiert.
      Wahrscheinlich bleibe ich für mich bei der Terminal-Lösung. Ein Grund ist, dass ich auf meinem Rechner (Mac OSX) die Aliasse sehe, d.h. ich kann direkt im Finder erkennen, welche Hosts wohin gucken. Das finde ich ganz komfortabel.

      Danke auch für die Erklärung zu den Sprachdateien. Nachdem ich eine Zeit lang regelmäßig an den Sprachdateien verzweifelt bin („Wo sind meine Änderungen schon wieder hin?!“), bin ich irgendwann dazu übergegangen, die Sprachdateien im Theme/Plugin-Verzeichnis zu löschen und alles im wp-content-Verzeichnis aufzubewahren. Seitdem konnte ich das Geschimpfe deutlich reduzieren.

      Kirsten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.