it-swarm.com.de

Geteilter Inhalt, aber über die Hauptseite "aktualisierbar"

Ich habe in der letzten Woche ziemlich viel recherchiert und konnte keine solide Antwort finden, die mein Problem behebt. Also beschloss ich, hierher zu kommen und zu fragen, ob jemand weiß, wie er bei meinem Problem helfen kann.

Ich arbeite an einem Projekt mit WordPress Multisite, mit dem sich Benutzer für eine Website registrieren und den Inhalt, den wir ihnen geben, als ihren eigenen brandmarken können (dh das Unternehmen, mit dem ich zusammenarbeiten werde, hat) eine Reihe von Maklerinformationen, die sie - gegen eine Gebühr - an andere Makler weitergeben und mit ihrem Logo und ihren Kontaktinformationen versehen möchten).

Es wäre also einfach, eine Vorlagensite mit allen bereits geladenen Inhalten zu erstellen. Wenn MS eine neue Site erstellt, erfasst es die Vorlage und erstellt die neue Site unter Verwendung der Vorlage.

Ich muss jedoch in der Lage sein, diesen Inhalt auf allen Websites zu ändern. Wir werden ungefähr 50 Seiten haben, die auf allen diesen Sites "geteilt" werden müssen, und wenn ich eine Änderung vornehmen muss, muss ich auf der ganzen Linie eine Änderung vornehmen. Ich habe es versucht

<?php switch_to_blog(1); ?>
Some code that displays the menu of the Main Blog
<?php restore_current_blog(); ?>

Aber das wird alles mit der Hauptseite verknüpfen (was den Zweck des Bezahlens zunichte macht, wenn der Inhalt als Ihr eigener gebrandmarkt wird). Ich habe Plugins gefunden, mit denen Sie Posts an alle Ihre Sites senden können, aber dies ist Inhalt, der vorab geladen wird.

Nach alledem hoffe ich, dass jemand hier in der Nähe dies bereits getan hat und bereit ist, sich über Fachwissen in dieser Angelegenheit auszutauschen. Vielen Dank, dass Sie sich das angeschaut haben!


EDIT # 1

Ich habe meine Recherchen sowohl in den WordPress-Support-Foren als auch hier bei StackExchange durchgeführt.

Gibt es eine Möglichkeit, Inhalte für WordPress-Websites freizugeben :: Diese Option funktioniert bei mir nicht wirklich - Ich muss in der Lage sein, Benutzern Gebühren für die Einrichtung ihrer neuen Websites zu berechnen und ihnen die Option zum Hinzufügen zu geben ihren Domainnamen zu ihrer Site, weshalb Multisite der Weg ist, von dem ich glaube, dass ich ihn gehen muss.

Re-Blogging - WP MS Support Forum :: Dies ist, was ich am meisten gefunden habe - Möglichkeiten zum Re-Bloggen von Inhalten auf allen Plattformen. Wenn ich Beiträge an alle ausschießen müsste, wäre das großartig. Dies ist jedoch nicht das, was ich erreichen möchte.

Genau das, wonach ich suche :: Aber leider gibt es keine Antwort.

Ich habe in WordPress Answers nach Variationen von "Multisite Content Share" gesucht und nichts (außer Nummer 3) gefunden, das zu meinem Thema (oder dem, wonach ich im Allgemeinen suche) passte.


EDIT # 2

Nachdem ich gestern weitere Nachforschungen angestellt hatte, fand ich ThreeWP Broadcast . Es macht zwar eine Menge, was eigentlich gebraucht wird, hat sich aber in den ersten Tagen meiner Recherche versteckt. Sie können damit Seiten auf allen Unterwebsites übertragen und Aktualisierungen an diese Seiten senden. Genial! Es stellt sich also eine neue Frage. Mein Kunde möchte nicht, dass die Endbenutzer ihre Inhalte bearbeiten (aus urheberrechtlichen und rechtlichen Gründen). Also habe ich einen Code geschrieben, der automatisch einige JS an den Anfang der Bearbeitungsseite im Backend anfügt:

function hidePublishingNow() {
global $blog_id, $wpdb;
$prefix = "ssr_";


if(is_super_admin()) {}
else {



    $page = $_GET['post'];
    $pageFound = false;


    if($page > 0 && isset($blog_id)) {
        $sql = "SELECT * FROM ssr__3wp_broadcast_broadcastdata WHERE blog_id = $blog_id";
        $results = $wpdb->get_results($sql, "ARRAY_A");

        foreach($results as $r) {
            if($r['post_id'] == $page) { $pageFound = true; }
            else {}
        }

        if($pageFound == true) {
            wp_enqueue_script(
                'hide-publishing',
                get_template_directory_uri() . '/js/removePublishing.js',
                array('jquery')
            );
        }
    } else {}
}

} add_action ('admin_head', 'hidePublishingNow');

Grundsätzlich wird beim Laden der Datei post.php im Admin-Bereich überprüft, ob es sich bei der aktuell bearbeiteten Seite um eine Seite handelt, die über Broadcasting verbunden wurde. Wenn eine Verbindung hergestellt wurde, wird der JS geladen, und alle Elemente auf dieser Seite werden entfernt und durch eine Warnung ersetzt. Der Endbenutzer sieht niemals den Inhalt im Editor und kann die Seite nicht aktualisieren.

Das funktioniert gut. Wenn ich das tun muss, ist das großartig - es ist die beste Lösung, die ich bisher gefunden habe. Was ich gerne tun würde, wäre die Kontrolle über die Haupt- wp-admin/edit.php? Post_type = page page (hier listet der Admin-Bereich alle Seiten auf zur Bearbeitung verfügbar). Es wäre großartig, eine WP -Aktion abzufangen, wenn diese Liste erstellt wird, und bestimmte Seiten auszublenden, während diese Liste erstellt wird. Ich recherchiere immer noch, ob das überhaupt möglich ist. Ich wollte nur meine Fortschritte hier auf den neuesten Stand bringen, falls jemand einen Rat hat, oder wenn jemand anderes auf dasselbe Problem stößt.


4
Chris LaFay

Sie können die Unterwebsites aktualisieren, wenn die Hauptwebsite aktualisiert wird. Unter der Annahme, dass Ihre Beitrags-IDs für den duplizierten Inhalt dieselben bleiben wie für den Beitrag auf der Hauptwebsite, können Sie ein Plugin schreiben, das nur auf der Hauptwebsite ausgeführt wird und bei jedem Speichern die Unterseiten aktualisiert

add_action('save_post','wase87206_broadcast');

function wase87206_broadcast($post_id) {
  $mainurl = get_option('siteurl');
  $post = get_post($ost_id);
  $blogs = get ids of all valid sub sites
  foreach ($blogs as $blogid) {
    switch_to_blog($blogid);
    $siteurl = get_option('siteurl');
    $post->post_content = str_replace($mainurl,$siteurl,$post->post_content); // fix links
    wp_update_post($post);
  }
  switch_to_blog(1); // set context back to main site
}

NOTE: dies ist nur ein skelett für den code, wie weiter unten kommentiert wurde, möchten sie möglicherweise keine revisionen, automatischen speicherungen oder spezifischen inhalte duplizieren, die nur auf der hauptsite angezeigt werden sollen. Eine andere Sache, die hier weggelassen wird, ist die Behandlung des Nachlöschens.

Sie benötigen denselben Code, um Kategorien, Tags und Metadaten zu synchronisieren. Um die Bilder synchron zu halten, ist es am einfachsten, eine symbolische Verknüpfung vom Upload-Verzeichnis der untergeordneten Websites zum Upload-Verzeichnis der Hauptwebsite herzustellen.

Sie müssen die Leistung dieses Codetyps überprüfen, damit das PHP-Zeitlimit, das Speicherlimit oder das nervige Warten bis zum Abschluss des Speichervorgangs nicht überschritten werden. Daher müssen Sie den Code möglicherweise neu codieren, um geplante Ereignisse zu verwenden, die aktualisiert werden Nur einige der Blogs in einem Durchgang lösen ein anderes Ereignis aus, um die Aktualisierung der anderen fortzusetzen.

1
Mark Kaplun