J'ai fait pas mal de recherches la semaine dernière et je n'ai pas été en mesure de trouver une réponse solide qui résolve mon problème. J'ai donc décidé de venir ici pour demander si quelqu'un sait comment m'aider à résoudre mon problème.
Je vais travailler sur un projet utilisant WordPress Multisite qui permettra aux utilisateurs de s'inscrire sur un site et de pouvoir renommer le contenu que nous leur attribuerons (c'est-à-dire: l'entreprise avec laquelle je travaillerai a une foule d'informations sur les agents immobiliers qu'ils veulent donner - moyennant des frais - à d'autres agents immobiliers et leur permettre de les marquer avec leur logo et leurs coordonnées).
Ainsi, il serait facile de créer un site de gabarit avec tout le contenu déjà préchargé. Lorsque MS crée un nouveau site, il saisit le modèle et crée le nouveau site à l'aide du modèle.
Cependant, je dois pouvoir modifier ce contenu sur tous les sites. Nous aurons environ 50 pages qui devront être "partagées" sur tous ces sites, et si je dois apporter un changement, je dois le changer dans tous les domaines. J'ai essayé d'utiliser ceci
<?php switch_to_blog(1); ?>
Some code that displays the menu of the Main Blog
<?php restore_current_blog(); ?>
Mais cela reliera tout au site principal (ce qui va à l’encontre du but de payer pour que le contenu soit de marque). J'ai trouvé des plugins qui vous permettent de diffuser des messages sur tous vos sites, mais ce sont des contenus qui seront préchargés.
Cela dit, j'espère que quelqu'un ici l'a déjà fait et est prêt à partager une expertise sur le sujet. Merci de regarder ça!
J'ai effectué mes recherches sur les forums d'assistance WordPress et ici, à StackExchange.
Existe-t-il un moyen de partager du contenu entre des sites wordpress :: Cette option ne fonctionne pas vraiment pour moi - je dois pouvoir facturer les utilisateurs pour la configuration de leurs nouveaux sites et leur donner la possibilité d'ajouter leur nom de domaine sur leur site, ce qui explique pourquoi Multisite est la voie que je crois devoir suivre.
Re-blogging - WP Forum d'assistance MS :: C'est ce que j'ai trouvé le plus souvent - des moyens de re-bloguer du contenu sur toutes les plateformes. Si je devais envoyer des messages à tout le monde, ce serait génial. Cependant, ce n'est pas ce que je voudrais accomplir.
Exactement ce que je cherche :: Mais malheureusement, il n'y a pas de réponse.
J'ai effectué une recherche dans WordPress Answers sur des variantes de "partage de contenu multisite" et je n'ai rien trouvé (autre que le n ° 3) correspondant à mon sujet (ou à ce que je recherche en général).
Donc, après avoir fait quelques recherches supplémentaires hier, j'ai trouvé ThreeWP Broadcast . Il se trouve que je fais pas mal ce qui est réellement nécessaire, mais que je me suis caché pendant mes premiers jours de recherche. Il vous permet de diffuser des pages sur tous les sous-sites et d'envoyer des mises à jour de ces pages. Impressionnant! Donc, une nouvelle question se pose. Mon client ne souhaite pas que les utilisateurs finaux modifient leur contenu (droits d'auteur et raisons légales). J'ai donc écrit du code qui ajoute automatiquement un JS en haut de la page d'édition dans le backend:
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');
Fondamentalement, lorsque post.php est chargé dans le panneau d'administration, il vérifie si la page en cours de modification est une page qui a été connectée via Broadcasting. S'il est connecté, le JS est chargé, supprime tous les éléments de cette page et le remplace par un avertissement. L'utilisateur final ne verra jamais le contenu dans l'éditeur ni ne pourra mettre à jour la page.
Cela fonctionne bien. Si c'est ce que je dois oublier, c'est génial - c'est la meilleure solution que j'ai trouvée à ce jour. Ce que je voudrais aimer faire serait de prendre le contrôle de la principale wp-admin/edit.php? Post_type = page page (le panneau de configuration répertorie toutes les pages disponible pour édition). Il serait bien d’intercepter une action WP lorsqu’il crée cette liste et de supprimer des pages spécifiques lors de la création de cette liste. Je fais encore des recherches pour voir si cela est possible. Je voulais simplement mettre à jour mes progrès ici au cas où quelqu'un aurait un mot à dire, ou plus tard si quelqu'un d'autre se heurtait au même problème.
Vous pouvez mettre à jour les sous-sites lorsque le site principal est mis à jour. En supposant que vos identifiants de publication pour le contenu dupliqué restent les mêmes que pour la même publication du site principal, vous pouvez écrire un plug-in qui s'exécute uniquement sur le site principal et, à chaque enregistrement, met à jour les sous-sites.
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: il ne s'agit que d'un squelette pour le code. Comme indiqué ci-dessous, il est possible que vous ne souhaitiez pas dupliquer les révisions, les sauvegardes automatiques ou un contenu spécifique devant être affiché uniquement sur le site principal. Une autre chose omise ici est le traitement de la suppression ultérieure.
Vous aurez besoin du même type de code pour synchroniser les catégories, les balises et les métadonnées. Pour que les images soient synchronisées, le plus simple est d’avoir un lien symbolique du répertoire de téléchargement des sous-sites au répertoire de téléchargement du site principal.
Vous devez examiner les performances de ce type de code afin qu'il ne soit pas soumis à la limite de temps php, à la limite de mémoire ou à une attente gênante jusqu'à ce que la sauvegarde soit terminée. Vous devrez peut-être le recoder pour utiliser des événements planifiés qui sont mis à jour. seuls certains blogs à la fois déclenchent un autre événement pour continuer à mettre à jour les autres.