web-dev-qa-db-fra.com

Plusieurs sites/domaines avec du contenu tous gérés par une seule installation de Wordpress

J'ai reçu une demande intéressante d'un client et, par la suite, j'ai passé deux heures à l'examiner. Son contenu est exactement ce que le titre de cet article suggère: ils ont 3 sites distincts avec des domaines uniques, mais le contenu et le contenu des sujets sont apparemment les mêmes.

Ils aimeraient pouvoir gérer un seul groupe de contenu à partir d'un seul et même emplacement central et que ces modifications soient répercutées sur les trois sites.

Par exemple, il existe une page Order Details avec une adresse e-mail sur laquelle vous pouvez en savoir plus sur les articles du catalogue et une liste de liens permettant d’acheter des choses. Le client souhaite pouvoir modifier cette adresse électronique de info @ en sales @ et remplacer le lien iTunes par un lien Amazon - puis pour que ces modifications soient mises à jour sur la page Détails de la commande de chacun des trois sites.

J'ai jeté un oeil à WPMU; Je ne l'avais pas utilisé auparavant, mais je venais de faire une installation rapide et de la lire depuis environ une heure, mais je ne pense pas que ce soit ce que nous recherchons, car le contenu de chaque sous-domaine est 'siled' (comme vous vous en doutez).

J'ai également examiné des services tels que InfiniteWP , ce qui est très joli et suggère que ce genre de fonctionnalité est "en préparation" (pour un prix), mais à l’évidence, entre-temps, il faut passer d’un site actif à l’autre pour mettre à jour les articles et les pages site par site.

Alors, est-ce que quelqu'un sait si ce genre de chose est techniquement réalisable, ou si le client demande la lune sur un bâton?

Mise à jour: Le client vient de lancer une clé en suggérant qu'un seul message d'actualité puisse être publié sur un, deux ou les trois sites. Ce qui rend les choses ... intéressantes (lire: mal de tête).

1
indextwo

Cela devrait être faisable.

La première étape serait de pointer chaque domaine vers le même document racine/installer de WordPress.

Ensuite, utilisez WP_HOME et WP_SITEURL dans wp-config.php qui changent en fonction de $_SERVER['HTTP_Host']. Exemple:

<?php
define('WP_HOME', 'http://' . $_SERVER['HTTP_Host']);
define('WP_SITEURL', 'http://' . $_SERVER['HTTP_Host'] . '/wp');

Cela devrait forcer vos permaliens (au moins ceux qui sont générés dynamiquement), vos files d'attente, etc. à fonctionner correctement.

À partir de là, je créerais une metabox dans l'admin avec quelques cases à cocher pour les domaines disponibles. Chaque type de poste disponible devrait avoir ceci.

Sur le serveur frontal, connectez-vous à pre_get_posts, recherchez le domaine actuel en tant que clé méta, modifiez la requête pour extraire uniquement les publications de ce domaine.

Exemple rapide (non testé, à utiliser avec prudence):

<?php
add_action('pre_get_posts', 'wpse70213_change_q');
function wpse70213_change_q($query)
{
    if(is_admin() || !$q->is_main_query())
        return;

    $key = 'wpse70213_Host_'; // or whatever you want this to be
    $Host = strtolower($_SERVER['HTTP_Host']); // normalize http Host

    // not sure if you can set meta_query like this...
    $q->set('meta_query', array(array(
        'key'   => $key . $Host,
        'value' => 'on', // or whatever you use for "on" checkboxes
    )));
}

En bref, c'est faisable, mais vous aurez besoin de contrôler toute l'installation WP.

Autres points à considérer:

  • Comment gérez-vous les menus de navigation?
  • Qu'en est-il des barres latérales?
  • Une seule taxonomie centrale sera définie pour un site donné. Est-ce un problème?
  • Combien de temps supplémentaire l'utilisation de meta_query sur chaque page ajoute-t-elle?
  • Les utilisateurs qui n'ont pas de publications sur un site auront toujours une page d'auteur sur ce site.
  • Si vous avez besoin de telles fonctionnalités, vous devrez inventer un système de gestion des utilisateurs qui imite l'attribution d'utilisateurs multisites à des blogs.

C'est une idée vraiment intéressante. Peut-être un bon matériel de plugin!

2
chrisguitarguy