Adventskalender Tag 23 – Wie man eigene Felder in einer Multi-Site aktualisiert

MarketPress Adventskalender 23

Zu den angenehmen Möglichkeiten einer Multi-Site gehört das Erzeugen von Beziehungen zwischen einzelnen Beiträgen über das ganze Netzwerk hinweg. Zum Beispiel kann man eine private Site benutzen, um Redaktionelles zu besprechen und diese Diskussionen mit den öffentlichen Beiträgen verknüpfen.

Oder man baut ein Sprachnetzwerk auf und kennzeichnet einen Beitrag auf de.example.com als Übersetzung von Beiträgen in ru.example.com und en.example.com. Dann möchte man auch einen Editor für die verknüpften Beiträge anbieten, damit alles auf nur einer Seite bearbeitet werden kann.

Dazu braucht man nur eine einfache Tabelle für die Beitragsbeziehungen und eine Routine, um die verknüpften Beiträge zu aktualisieren, wenn sie geändert wurden, also switch_to_blog() und wp_update_post().

Das könnte so ausehen:

Und dann wird man merken, wie viele Plugins nur für Single-Site-Installationen gemacht wurden und die Beiträge verunstalten, wenn sie im Netzwerk aktiviert werden. Warum?
Weil sie die eigenen Felder für alle Beiträge aktualisieren, ohne zu testen, ob sie noch auf der selben Site sind wie die ursprüngliche Metabox. switch_to_blog() ist ein unbekannter Faktor für die meisten Plugins.

Mit den Resultaten haben die Nutzer schwer zu kämpfen: Russische SEO-Keywords tauchen plötzlich auf der englischen Site auf, und es gibt keinen einfachen Weg, dies zu beheben. Seltsame Untertitel erscheinen auf der falschen Site, oder private Notizen finden ungewollt ihren Weg an die Öffentlichkeit.

Es gibt eine simple Lösung dafür: Man schicke die ID der Ausgangsseite mit den Metaboxdaten mit und kontrolliere vor dem Speichern, ob sie mit der ID der aktuellen Site übereinstimmt. Also ein verstecktes Input-Feld …

… und in der Validierung, ehe Daten gespeichert werden eine Kontrolle:

Das ist alles. Die Nutzer freuen sich, weil sie keine Daten mehr verlieren. Das funktioniert selbst dann, wenn zwei Plugins den selben Namen für das Feld verwenden.

Beitrag teilen

Author Avatar

Ich bin Entwickler und Autor für MarketPress. In meiner Freizeit moderiere ich mehrere WordPress-Communities.

Auch interessant:

woonews19

WooCommerce Wochenrückblick #19: Google Analytics, kostenlose Themes und neue Kennzeichnungspflicht

von Michael Firnkes

Die Shop-Analyse ist wichtig, muss aber rechtlich abgesichert werden. Für WooCommerce gibt es neue Theme-Inspirationen und ein neues German Market. Dies u ...

Weiterlesen
slack-blog

Neues Plugin: Slack Connector - Verbinde WordPress, WooCommerce und Slack

von Michael Firnkes

Anfangs wollten wir lediglich unsere eigenen Slack-Prozesse optimieren. Mit automatisierten Benachrichtigungen aus dem MarketPress-Shop, dem Blog und unser ...

Weiterlesen
woo26

WooCommerce 2.6: Deutlich mehr Versandoptionen, bessere Bestellübersicht

von Michael Firnkes

WooCommerce 2.6 "Zipping Zebra" steht kurz vor der Veröffentlichung, das Release ist für kommenden Dienstag geplant. Wir zeigen dir, was sich für dich ...

Weiterlesen
wp-geburtstag

13 Jahre WordPress - 13 Mal ein WooCommerce- oder Blog-Theme gewinnen

von Michael Firnkes

WordPress wird 13. Und wiederholt seine Erfolgsgeschichte: Mit WooCommerce. Feiere mit und gewinne eines unserer Top-Themes. WordPress hat einen rasante ...

Weiterlesen

Kommentare

4 Kommentare

  1. #1

    danke für die sensibilisierung betreffend multisites und speicherung.

    toscho, es wäre für weniger versierte besucher wahrscheinlich hilfreich, wenn du anmerken würdest, dass die funktion

    keine wordpress eigene funktion ist.
    die funktion dient dazu, mit der übergebenen id in der eigens erstellten tabelle nach der post id der anderen multisite zu suchen.

    mfg
    souri

  2. #3

    Thomas, ich danke dir sehr, für diesen Artikel. Ich habe mich bei meinem ersten kleinen Projekt, das mehrere Sprachen beherrschen sollte, für die Umsetzung mithilfe der Multisite Installation entschieden. Von der technischen Sauberkeit dieses Ansatzes hat mich dieser Artikel von Frank überzeugt: http://bueltge.de/wordpress-mehrsprachig-nutzen-ein-loesungsvorschlag/1339/ . Also habe ich das MultilingualPress Pro bei euch geholt. Diese Wahl ist aber bisher eher eine Qual gewesen. Der Grund? Ja eben der den du auch nennst, dass viele Plugins richtig Probleme haben mit einer Multisite Variante von WordPress.

    Deswegen freut es mich sehr, diesen Artikel hier gefunden zu haben. Ein kleiner Funken Hoffnung ist wieder aufgetaucht. Jedoch kann ich momentan nicht viel mit dieser Anleitung anfangen. Könntest du das vielleicht an einem aktuellen Beispiel von mir verdeutlichen?

    Beispiel
    Ich verwende in einer WordPress Multisite Installation den Layer Slider WP (kreaturamedia.com). Wenn ich auf der englischen Seite den Slider aktiviere, dann wird er auf der deutschen Seite nicht mehr gefunden.
    So sieht die Dateienstruktur von dem Layer Slider WP: http://goo.gl/cd4KwE

    Frage:
    Wohin in diese Dateien füge ich den von dir vorgeschlagenen Code?

    • #4

      Wenn du kein PHP kannst, dann fasse das Sliderplugin lieber nicht selbst an, sondern melde den Fehler den Entwicklern, damit die ein Update herausbringen.

      In der Zwischenzeit kannst du ein separates Plugin anlegen mit diesem Inhalt:

      Das verhindert das Speichern falscher Werte in anderen Plugins, wenn diese die grundlegenden Sicherheitsprüfungen eingebaut haben. Haben sie das nicht, solltest du ohnehin ein anderes Plugin suchen, denn dann hast du eine Sicherheitslücke.

Schreibe einen Kommentar

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

Du kannst folgende HTML Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">