Gleichzeitig eine Schleife mit mehreren DBs machen

Ich habe ein Website-Setup mit mehr als 3-4 WordPress-Setups als Unterverzeichnissen von main. Beispielsweise:

Site | ---------- Site/Site1 | ---------- Site/Site2 | ---------- Site/Site3 

Jeder hat separate Codebasis, separate DB für sich. Der databaseserver ist einer und das Host-Verzeichnis ist ebenfalls eins. Grundsätzlich können wir sagen, dass dies die Spiegel des gleichen Setups wie Unterverzeichnisse der Haupt-Site sind.

Nun möchte ich wissen: Wie kann ich einen Loop in der Homepage der übergeordneten Site “Site” ausführen, der die Posts von “Site1”, “Site2”, “Site3” holt und einbezieht?

Hinweis:

– Ich kann es nicht Multisite-Setup machen, da die Codebasis existiert und komplex ist.

– Die Tabellen in jedem DB sind gleich vorangestellt.

– Zum besseren Verständnis der Aufbausituation habe ich hier ein Bild angehängt. Einrichtung mit DB

Solutions Collecting From Web of "Gleichzeitig eine Schleife mit mehreren DBs machen"

Im Namen der schlechten Praktiken rate ich Ihnen, diese sofort auszuschließen, indem Sie Raw-SQL-Abfragen mit entfernten databaseen auf derselben Seite verwenden. Es wäre langsam, unsicher und mühsam zu warten.

Dass Sie sich in einer Situation befinden, in der eine Kombination aus hyperDB + Multisite keine Option ist, zeigt, dass Sie in Ihrem Code vor ernsten architektonischen Herausforderungen stehen. Es ist keine Option, die Refactoring und Normalisierung Ihres Codes auszuschließen, denn selbst wenn Sie eine angemessene Antwort auf Ihre Frage erhalten, wird dies immer noch notwendig sein, da Sie sonst mehr Zeit für Support- und Wartungskosten aufwenden müssen Dinge reparieren.

Aber nachdem du das gesagt hast, hast du eine Frage gestellt. Hier sind mögliche Lösungen.

Beachten Sie, dass diese Kriterien die Kosten erhöhen und die Skalierbarkeit drastisch reduzieren:

  • Darauf bestehen, mehrere Posts von mehreren Seiten in derselben Schleife zu haben
  • Instant-Publishing auf der Hauptseite

Also hier sind einige Möglichkeiten, es zu versuchen:

  • Verwenden Sie RSS, um Posts über WP-Cron zu erhalten. Generieren Sie den HTML-Code für diese Posts und speichern Sie ihn vorübergehend. Holen Sie die Beiträge erneut, wenn sie ablaufen. Zeigen Sie den Inhalt des Transienten auf dem Frontend an.
  • Push-Posts auf die Haupt-Website bei Veröffentlichung / Update von den Unterseiten, mit XML-RPC
  • iframes (das ist eine entsetzliche kluge Art, es zu tun, ich erwähne es hier aus Gründen der Vollständigkeit und rate dringend davon ab)
  • Verwenden Sie ein Aggregations-Plug-in, um Posts zu erhalten, und veröffentlichen Sie sie anschließend auf der Hauptseite. Wenn auf einen Post geklickt wird, verwenden Sie wp_redirect, um zum ursprünglichen Post auf den Unterwebsites umzuleiten.

Probleme, die ich mit Ihrer Einrichtung vorhersehe:

  • Sie verwenden HyperDB, aber alle Ihre Websites sind separate Installationen
  • Eine Website im Stammordner kann mit denen in Unterordnern in Konflikt geraten, wenn Sie die Umschreibungsregeln verwenden
  • / site / ist möglicherweise keine gute Idee, da die Site intern ein reserviertes Schlüsselwort ist. Dies wird getestet werden müssen.
  • In Ihrem Beispiel würden Sie 4 Benutzernamen und Passwörter pro Person erhalten. Der Versuch, sie ohne Multisite zusammenzuführen, wird schmerzhaft sein.
  • Das Auflisten von site1-Posts getrennt von Site 2-Posts auf der Hauptseite wird wesentlich schneller und einfacher sein als das Mischen der beiden und wird besser skalieren.
  • Verschiedene Versionen und Konfigurationen desselben Codes auf 4 Instanzen auf demselben Server und derselben Domäne werden irgendwann in der Zukunft auseinanderfallen. Dass sie nicht in eine gemeinsame Codebasis mit untergeordneten Themen und separaten Plugins für die spezialisierten Komponenten zusammengeführt werden können, ist ein Zeichen für eine schlechte Architektur.